我在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]
答案 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(变化很小)。