0

それは私を夢中にさせています.htaccesでいくつかの簡単な書き換えをしたいのですが、うまくいきません.

私が望む最初のリダイレクトは、誰かがサーバー URL ( http://www.myserver.com ) だけを入力した場合、彼は /var/www サブフォルダーにリダイレクトされます。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ ./some/application/$1 [QSA]
RewriteRule ^$ ./some/application/ [QSA]

そして動作します...私が望んでいた2番目のステップは、誰かが(http://www.myserver.com/testpage)を入力すると、このURLの下で/ var/wwwの別のサブフォルダーにリダイレクトされることです。

いろいろ試してみましたが、500 以上の内部サーバー エラーが発生しません。よろしければご意見をお寄せください。ありがとうございました。

4

1 に答える 1

0

別の を追加すると、最初の 2 つのルールによってすでに書き換えられRewriteRuleた URI で動作するという事実に気を取られている可能性があります。これは、たとえば、次のような場合を意味します。

RewriteRule ^testpage(/.*)?$ ./some/other/app$1 [QSA]

この時点までに合格するため、失敗します/some/application/testpage

既存の書き換えに別の条件を追加することで、この問題を回避できます。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/testpage/?       ## this is the new condition
RewriteRule ^(.+)$ ./some/application/$1 [QSA]
RewriteRule ^$ ./some/application/ [QSA]

## here is the new rule
RewriteRule ^testpage(/.*)?$ ./some/other/app$1 [QSA]

基本的[L]に、それ以上のルールの実行を停止するフラグをルールに指定しない限り、ルールは累積的であり、以前のルールの出力に基づいて動作します。

于 2013-07-04T16:22:57.547 に答える