Wordpress忽略子目录,命中或错过

时间:2011-07-08 23:13:35

标签: php wordpress .htaccess

我在WordPress上运行了一个网站。我正在我们服务器上的一个子目录(sandbox/)下测试一个新站点。对于新网站,我使用类似于WP的.htaccess重写规则重写清理网址。我发现在WP中具有等效路径的页面重定向到WP页面。

例如,我有一个页面的网址为/sandbox/supplies/information,可以正确地重定向到新网站。但是,我有另一个位于/sandbox/events/的页面,该页面将重定向到/events/的基本导演。

在查看了人们的类似问题后,我尝试使用RewriteCond %{REQUEST_URI} !sandbox/ [NC]和其他变体(!^sandbox/.$等),但似乎没有任何效果。我已经复制了下面的两个.htaccess文件。

提前感谢您的时间。我希望我能够很好地解释这一情况。

Base .htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_URI} !sandbox/ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>
# END WordPress

子目录(sandbox /).htaccess

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /sandbox/index.php [L]

1 个答案:

答案 0 :(得分:0)

嗯..我只在主.htaccess文件中使用过这一行,这在我的模拟设置上都运行良好:

RewriteCond %{REQUEST_URI} !^/sandbox/ [NC]

我建议您将Options +FollowSymLinks更改为Options +FollowSymLinks -MultiViews(或者您已经尝试过这样做了吗?)

如果网址中包含/sandbox/部分而您的/sandbox/.htaccess没有RewriteOption inherit行,则父母.htaccess中的规则根本不会被使用。


您对Apache有多少控制权?你能编辑配置文件(httpd.conf或httpd-vhost.conf)吗?如果你能 - 启用重写调试(RewriteLogLevel 9)并尝试那个有问题的URL - 你应该看到到底发生了什么(可能是从php应用程序中重定向?)。除此之外,你的规则绝对适合我。


不知道这是不是好主意。但是如果你无法弄清楚这种行为的原因,可以考虑将这两个.htaccess文件加入1(变化很小)。