0

これは一般的な問題であり、これには多くの一般的な回答がありますが、機能しない特定の小さな詳細があり、ドキュメントを読んでも理由を理解するのに役立ちません.

ここに問題がwww.あります。ドメイン名から削除したいのです。.htaccessmod_rewriteで使用します。コードは次のとおりです。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.swedish\-cloud\.com$
RewriteRule ^(.*)$ "http\:\/\/swedish\-cloud\.com\/$1" [R=301,L]

入力するだけで機能しhttp://www.swedish-cloud.comます。に変更しhttp://swedish-cloud.comます。

しかし、たとえば、次のように入力すると、URL は変更http://www.swedish-cloud.com/index.htmlされません。http://swedish-cloud.com/index.html

ただし、存在しないファイルへのパスをhttp://www.swedish-cloud.com/index2.html入力すると、URL が404 Not Foundエラーをhttp://swedish-cloud.com/index2.html表示するように変更されます。

私が欠けているものを理解してもらえますか?ありがとうございました。

PS: サーバーへのルート アクセス権がありません。

4

2 に答える 2

1

正しい答えを教えましょう。cond の構文は間違っていますが、重要ではなく、ルールの構文も間違っています。試す:

RewriteCond %{HTTP_HOST} =www.swedish-cloud.com
RewriteRule ^.*          http://swedish-cloud.com/$0   [R=301,L]

それが必要な場合は cond で等値演算子を使用し、一致文字列をエスケープする必要はありません。

置換文字列には引用符やエスケープは必要ありません。また、URI 全体が必要なため、$0 (一致パターン全体) を使用しないでください。

于 2012-06-01T13:37:01.993 に答える
0

表示されている 404 エラーは標準エラーです。www.example.com/something.html の書き換えが機能しない理由は、行末アンカーのために正規表現と一致しないためです。swedish-cloud.com$ の後の $。これは、 www.swedish-cloud.com が書き換えられた後は何も意味しません。その時点で正規表現を本質的に終了しているためです。

試す:

RewriteCond %{HTTP_HOST} ^www.example\.com
RewriteRule ^(.*)$ http://example.com/$1   [R=301,L]
于 2012-06-01T02:39:50.537 に答える