ApacheはRewriteRuleを使用してURL全体をリダイレクトします。

ApacheはRewriteRuleを使用してURL全体をリダイレクトします。

「RewriteRule」リダイレクトの問題があります。 mt .htaccessには次のものがあります。

RewriteCond %{HTTP_HOST} ^foo.domain.com
RewriteRule ^(.*)$ http://www.domain.com/foo/$1 [R=permanent,L]

foo.domain.comにアクセスすると、www.domain.com/foo/にリダイレクトされます。ただし、foo.domain.com/barにアクセスするとエラーが発生し、www.domain.com/にアクセスする必要があります。 foo/bar。エラーはどこにありますか?

答え1

Apache(またはmod_rewrite)が無効な「Location:」ヘッダー行を作成している可能性があります。書き換えルールにスラッシュを追加します。

RewriteCond %{HTTP_HOST} ^foo.domain.com
RewriteRule ^/(.*)$ http://www.domain.com/foo/$1 [R=permanent,L]

スラッシュなしでこれを試みると、次のような「Location:」ヘッダー行が表示されますhttp://www.stratigery.com/foo//whatever。すべてのブラウザがURLに追加のスラッシュを処理できるかどうかはわかりません。

関連情報