Wordpress搞砸了重写规则

时间:2013-05-15 14:07:46

标签: wordpress mod-rewrite

# 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

RewriteEngine on
RewriteCond %{HTTP_HOST}    ^www.app.domain.com$
RewriteCond %{REQUEST_URI}  !^/app/
RewriteRule (.*)            /app/$1
RewriteCond %{HTTP_HOST}    ^app.domain.com$
RewriteCond %{REQUEST_URI}  !^/app/
RewriteRule (.*)            /app/$1 

问题:app.domain.com正常运行,但只要添加app.domain.com/folder这样的子文件夹,就会得到Wordpress标签页。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题出在这里

RewriteCond %{REQUEST_URI}  !^/app/
RewriteRule (.*)            /app/$1 

其中说如果URL不以/ app /开头(/文件夹没有),则必须将其重写为/ app / folder。在重写之后,将再次处理RewriteRules,并且wordpress部分将发现该文件夹不存在并为您启动wordpress。

解决此问题的方法是将最后一个块更改为

RewriteCond %{HTTP_HOST}    ^(www\.)?app\.domain\.com$
RewriteRule %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  !^/app/
RewriteRule .? app%{REQUEST_URI} [L]

这告诉apache如果/ folder不存在,它可能只会重写到/ app /文件夹。

(你可以删除app.domain.com的全部内容,这个块可以处理www.app.domain.com以及app.domain.com