由于父文件夹中的.htaccess,子目录中的Wordpress站点无法正确重定向到帖子

时间:2017-02-15 15:20:34

标签: wordpress apache .htaccess

我有这个奇怪的案例......我有一个wordpress网站,安装在另一个网站内的文件夹(示例)中。这是如此,因为wordpress站点属于托管域(example.net)。

原来如此!在我的主站点的文件夹中,我有这个.htaccess

## rules for error documents
ErrorDocument 400 /400.php
ErrorDocument 401 /401.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.php

<IfModule mod_rewrite.c>
RewriteEngine On

## no trailing slash policy
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

## rewrite html pages if there is a present php equivalent
RewriteRule ^(.*)\.html$ $1.php?%{QUERY_STRING} [L]

## if 'examle' is required, take us to the example.net domain
RewriteRule ^example - [L]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.net$ [NC]
RewriteRule ^(.*)$ example/$1 [L]
</IfModule>

wordpress网站的.htaccess是默认的:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我可以成功打开Wordpress网站的主页,但是,当我尝试访问某些页面/帖子时,我看到了错误

页面未正确重定向

我在Apache 2.4上

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。事实证明(我不知道)没有任何拖尾斜杠政策打破Wordpress。它严格要求尾部斜杠是保留者。

解决方案是以这种方式编写no-trailing-slash策略,因此如果访问wordpress站点,它将不会被执行。

在我的情况下,我将规则更改为:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?example\.net$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
</IfModule>