私のジレンマ:
私のウェブサイトのルートにある .htaccess :
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
サブディレクトリ /foo の .htaccess 内
RewriteEngine On
RewriteRule ^page1\.html$ /foo/page2.html [R=301]
最初に、すべてのリクエストに先頭の www. 2 番目の例では、foo サブディレクトリにある page1.html に対する要求を、同じくそのサブディレクトリにある page2.html にリダイレクトしています。
私のブラウザで、訪問しようとしています:
http://www.example.com/foo/page2.html <== 動作、良好
http://www.example.com/foo/page1.html <== http://www.example.com/foo/page2.htmlにリダイレクトします。
http://example.com/foo/page1.html <== http://www.example.com/foo/page2.htmlにリダイレクトします。
http://example.com/foo/page2.html <== リダイレクトが発生しない、悪い
==> リダイレクト先: http://**www.**example.com/foo/page2.html
実験を通して、Web サイトのルートにある .htaccess ファイルのリダイレクト ルールは、そのサブディレクトリに .htaccess ファイルが含まれていない場合、またはそのサブディレクトリに .htaccess ファイルが含まれていて、それを実行する書き換えルールが指定されている場合にのみ、そのサブディレクトリ内のページへの要求に対して有効になるように思われます。この特定のリクエストに対する効果。
誰かが私が間違っていることを見ることができますか? wwwを貼り付ける書き換えルールを取得するにはどうすればよいですか。http://example.com/foo/page2.htmlの起動に失敗した場合は?
ホップありがとう、うまくいきました!
記録のために、サイトのルートにあるファイルの書き換えルールを次のように変更する必要がありました。
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [R=301,L]
これは問題ありません。ありがとう!