我有一个网站,我在root .htaccess
文件中使用此代码:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
这可以正常工作,直到稍后安装WordPress。
我在网站的/blog
部分安装了WordPress。 /blog
目录拥有自己的.htaccess
:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
我相信WordPress安装正在影响我的全局apache规则。我想将所有www.mysite.com/blog/my-blog-post
重定向到mysite.com/blog/my-blog-post
答案 0 :(得分:0)
如果您使用Apache 2.3.10
及以上版本,则可以使用InheritBefore
,如下所示:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteOptions InheritBefore
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
否则,在较旧的Apache版本中,您需要在当前的.htaccess中包含www
删除规则,如下所示:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteOptions InheritBefore
RewriteEngine On
RewriteBase /blog/
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L,NE]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress