重写规则以便为子域和子目录一致地工作

时间:2013-03-26 16:09:21

标签: .htaccess mod-rewrite

我有一个很好的规则来重写url到/ meetings,但是当从子目录访问时规则不会正确地重写url。

编辑:我的.htaccess文件位于子目录/博客

当我使用此规则时:...

RewriteRule ^meetings$ /?page_id=2809 [L]

从子域名访问时( blog.example.com/meetings ): blog.example.com/meetings

从子目录访问时( example.com/blog/meetings ): 404错误

当我使用此规则时:...

RewriteRule ^meetings$ http://blog.example.com/?page_id=2809 [L]

从子域名访问时( blog.example.com/meetings ): blog.example.com/meetings

从子目录( example.com/blog/meetings )访问时: blog.example.com/?page_id=2809

有没有办法让规则一致地为子域和子目录工作?

1 个答案:

答案 0 :(得分: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]。