Apache mod_rewrite: как перенаправить доступ к подпапкам доменов аддонов на сам домен аддонов? - PullRequest
0 голосов
/ 14 июля 2010

Ситуация (дерево каталогов) на сервере 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" как часть, потому что отсутствует последняя косая черта. Знаете ли вы, как исправить / устранить эту проблему?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 сентября 2010

Попробуйте это:

RewriteCond %{HTTP_HOST} !^www\.addondomain1\.com$
RewriteCond %{REQUEST_URI} ^/[^/]+/(.*)
RewriteRule ^ http://wwww.addondomain1.com/%1 [R=301,L]
0 голосов
/ 14 июля 2010
DirectorySlash Off
...