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]

これは、/folder が存在しない場合にのみ /app/folder に書き換えることができることを apache に伝えます。

(また、app.domain.com のすべてのものを削除できます。このブロックは、www.app.domain.com と app.domain.com の両方を処理します。

于 2013-05-16T07:24:35.283 に答える