0

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」を一部として取得していると思います。この問題を修正/回避する方法を知っていますか?

ありがとう!

4

2 に答える 2

0

これを試して:

RewriteCond %{HTTP_HOST} !^www\.addondomain1\.com$
RewriteCond %{REQUEST_URI} ^/[^/]+/(.*)
RewriteRule ^ http://wwww.addondomain1.com/%1 [R=301,L]
于 2010-09-30T10:23:54.567 に答える
0
DirectorySlash Off
于 2010-07-13T23:28:12.480 に答える