2012-07-18 83 views
0

我在子目录中运行WordPress的(和BuddyPress的插件):奇modrewrite行为

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关于我们页面有一个“漂亮”的网址mydomain.com/mysubdomain/about-us

我也有一个非WordPress的网站在我位于mydomain.com的根目录与以下重写规则:

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的404页没有发现错误。 (在浏览器中的网址是否正确:http://mydomain.com/newpage.html

由于WordPress的404页显示,这表明该问题是与WordPress的modrewrites与newpage.html重定向冲突。

咨询/建议,不胜感激!

谢谢!

回答

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不与什么似乎是发生排队。问题是,WordPress的控制器可能无法正确处理该请求,如果你简单地重写URI(不知道这一点,这只是一个猜测),所以你可能需要重写未重写的URI:

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

感谢您的回复Jon。这听起来像你不能重定向到一个“漂亮”的网址,所以你应该重定向到?页= 2,是正确的? – user663561 2012-07-20 02:32:05

+0

@ user663561在最后一个规则不重定向。在浏览器的地址栏会仍然说'mydomain.com/newpage.html'但得到什么服务是'/ mysubdomain /?页= 2'。它在内部被重写。没有理由,使之成为漂亮的URL,如果浏览器永远看不到它。 – 2012-07-20 02:34:36

+0

嗨Jon, “..问题是,如果您只是简单地重写URI,那么wordpress控制器可能无法正确处理请求,因此您可能需要重写为未重写的URI ......” 似乎是发生什么事。重定向到未重写的URI似乎工作。 – user663561 2012-07-23 17:07:36