如何在WordPress中解决此重定向冲突?

时间:2016-07-26 15:25:06

标签: wordpress apache .htaccess redirect

我有一个网站,我在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

1 个答案:

答案 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
相关问题