2013-03-26 2 views
0

/meeting에 URL을 다시 쓰는 데 좋은 규칙이 있지만 하위 디렉터리에서 방문했을 때 규칙이 제대로 URL을 다시 쓰지 않습니다.하위 도메인과 하위 디렉토리에서 일관되게 작동하는 다시 쓰기 규칙

편집 : 내 htaccess로 파일은 하위 디렉토리/블로그에

나는이 규칙을 사용합니다 ...

하위 도메인에서 방문
RewriteRule ^meetings$ /?page_id=2809 [L] 

(blog.example.com/ 회의) : blog.example.com/meetings 하위 디렉토리에서 방문

(example.com/blo g/회의) : 404 오류

나는이 규칙을 사용합니다 ...

(하위 도메인에서 blog.example.com/meetings를) 방문
RewriteRule ^meetings$ http://blog.example.com/?page_id=2809 [L] 

: blog.example .COM/미팅 하위 디렉토리에서 방문

(example.com/blog/meetings) : blog.example.com/?page_id=2809

하위 도메인과 하위 디렉토리에서 일관되게 작동하는 규칙을 얻을 수있는 방법이 있습니까?

+0

어떤 URL을 요청하십니까? 질문을 업데이트하십시오. – vmeln

+0

blog.example.com/meetings 및 example.com/blog/meetings. – Blenderer

답변

2

당신은 /blog 디렉토리에 하나 개의 .htaccess 파일에서 이것을 시도 할 수 있습니다 : 영구 리디렉션

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase /blog 

RewriteCond %{HTTP_HOST}  blog\.example\.com    [NC] 
RewriteCond %{QUERY_STRING} !page_id=      [NC] 
RewriteRule ^meetings   /?page_id=2809     [L,NC] 

RewriteCond %{HTTP_HOST}  ^(www\.)?example\.com   [NC] 
RewriteCond %{QUERY_STRING} !page_id=      [NC] 
RewriteRule ^meetings   /blog/?page_id=2809    [L,NC] 

을 함께 [L, NC]을 교체 [R = 301, L, NC].

+0

'blog.example.com/meetings'에서 방문했을 때 "Not found"가 표시됩니다. – Blenderer

+0

슬래시가 추가되었습니다. 다시 시도하십시오. 여전히 작동하지 않는다면 2 가지 질문 :'example.com/meetings'는 예상대로 작동하고'example.com/blog'에서 호스팅되는 addon 하위 도메인입니까? –

+0

이것은 효과가 있습니다! RewriteCond가 필요한 이유와 정확히 MultiView가하는 일을 설명 할 수 있습니까? 대단히 감사합니다! – Blenderer

관련 문제