Apache サーバー上の状況 (ディレクトリ ツリー):
maindomain.com/
|
|_ .htaccess (just an empty file, no rule in here)
|
|_ addondomain1.com/
| |
| |_ .htaccess
| |_ index.html
|
|_ addondomain2.com/
|
|_ .htaccess
|_ index.html
現在、addondomain1.com のファイルは、次の場所に移動して表示できます。
http://www.addondomain1.com/index.html
http://www.addondomain1.com/
http://www.addondomain1.com
http://www.maindomain.com/addondomain1.com/index.html
すべてのリクエストをリダイレクトしたい:
http://maindomain/addondomain1.com/some/path/anypage.html
(「www」の有無にかかわらず)
同じパス/ファイルに、ただし addondomain1.com の下にあり、常に「www」を使用:
http://www.addondomain1.com/some/path/page.html
これを達成するために、次のmaindomain.com/addondomain1.com/.htaccess
ルールを設定しました。
RewriteCond %{HTTP_HOST} !^www\.addondomain1\.com$
RewriteRule ^(.*)$ "http://wwww.addondomain1.com/$1" [R=301,L]
これはほとんどうまく機能し、以下のすべてのものをうまくリダイレクトします。
http://addondomain1.com/index.html >> http://www.addondomain1.com/index.html
http://www.addondomain1.com/ >> http://www.addondomain1.com/
http://www.addondomain1.com >> http://www.addondomain1.com
http://www.maindomain.com/addondomain1.com/index.html >> http://www.addondomain1.com/index.html
http://www.maindomain.com/addondomain1.com/ >> http://www.addondomain1.com/
http://maindomain.com/addondomain1.com/ >> http://www.addondomain1.com/
残念ながら、次の場合:
http://maindomain.com/addondomain1.com
http://www.maindomain.com/addondomain1.com
上記の両方のリンクは最後のスラッシュなしであることに注意してください。リダイレクト先は次のとおりです。
http://www.addondomain1.com//server/root/path/addondomain1.com
^(.*)$
最後のスラッシュがないため、正規表現は「addondomain1.com」を一部として取得していると思います。この問題を修正/回避する方法を知っていますか?
ありがとう!