0
# 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 标记页面。

我究竟做错了什么?

4

1 回答 1

0

问题就在这里

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

这表示如果 URL 不是以 /app/ 开头(/folder 不是),则必须将其重写为 /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/folder。

(并且您可以删除 app.domain.com 的全部内容,此块同时处理 www.app.domain.com 和 app.domain.com

于 2013-05-16T07:24:35.283 回答