12

次の htaccess を使用して、ドメインのルートに CMS をインストールしています。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

これにより、わかりやすい URL が処理され、すべてが index.php にリダイレクトされます。私の問題は、別の cms を持つサブフォルダーがあることです。index.php ではなく、サブフォルダーへの要求を適切なフォルダーにリダイレクトする必要があります。

次のことを試しましたが、うまくいかないようです

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(sub-folder)
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

誰でも助けることができますか?

ありがとう

4

1 に答える 1

16

リクエストURIがサブフォルダと一致するかどうかを適切に確認する必要があります

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !/subfolder
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

いずれにせよ、最初の2つのrewritecondは、要求ファイル名がファイルまたはディレクトリではない場合を意味します。つまり、参照しているファイルがサブフォルダーにあり、サブフォルダーがdocrootにある場合は、何もする必要はありません。

それでも機能しない場合は、ログを有効にすると次のことが役立つ場合があります。

RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

このログインを本番環境で回避する

レベルに高い値を使用すると、Apacheサーバーの速度が大幅に低下します。デバッグの場合にのみ、レベル2より大きい書き換えログファイルを使用してください。

于 2012-12-20T01:44:35.103 に答える