奇怪的modrewrite行为

时间:2012-07-18 16:18:04

标签: wordpress apache mod-rewrite

我在子目录中运行Wordpress(和buddypress插件):

mydomain.com/mysubdomain/

我的modrewrites如下:

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

一切都按预期工作。例如,mydomain.com / mysubdomain /?page = 2的“关于我们”页面有一个&#34;漂亮的&#34; mydomain.com/mysubdomain/about-us的网址

我在mydomain.com的根目录中还有一个非wordpress 网站,其中包含以下重写规则:

RewriteCond %{HTTP_HOST} ^([a-z0-9-]+).mydomain.com [NC]
RewriteRule ^newpage\.html$ http://mydomain.com/mysubdomain/about-us [NC,L]

这会将http://mydomain.com/newpage.html重写为http://mydomain.com/mysubdomain/about-us处的页面 - 然而,这会显示Wordpress&#39;找不到404页面错误。 (浏览器中的网址是正确的:http://mydomain.com/newpage.html

自Wordpress 404页面显示以来,这表明问题出在Wordpress&#39; modrewrites与newpage.html重定向冲突。

帮助/建议非常感谢!

谢谢!

1 个答案:

答案 0 :(得分:0)

您的规则似乎没有按照您的描述进行:

RewriteCond %{HTTP_HOST} ^([a-z0-9-]+).mydomain.com [NC]
RewriteRule ^newpage\.html$ http://mydomain.com/mysubdomain/about-us [NC,L]

将浏览器重定向到http://mydomain.com/mysubdomain/about-us,而{{3}}与正在发生的事情不符。问题是wordpress控制器可能无法正确处理请求,如果你只是重写URI(不确定这个,这只是一个猜测),所以你可能需要重写到未重写的URI:

RewriteRule ^newpage\.html$ /mysubdomain/?page=2 [NC,L]