2012-05-26 4 views
0

У меня есть несколько доменных имен, указывающих на одном Apache2 виртуального хоста:Алиас и RewriteRules работать вместе

ServerName domain1.com 
ServerAlias domain2.com 
ServerAlias domain3.com 

Чтобы всегда отображать один и тот же URL я использую RewriteRule так:

RewriteCond %{HTTP_HOST} !^domain1.com [NC] 
RewriteRule (.*) http://domain1.com/$1 [R=301,QSA,L] 

Наконец у меня есть псевдоним, как это:

Alias /niceurl /long/path/to/index.php 

все работает отлично, за исключением того, что, когда пользователь посещает domain2.com/niceurl/foo, отображаемый в браузере URL будет domain1.com/path/to/index.php/foo, а не domain1.com/niceurl/foo

Я хотел бы добавить, что в других случаях работать, как и ожидалось, другими словами:

domain2.com/foo => domain1.com/foo 
domain1.com/shorturl/bar => domain1.com/shorturl/bar 

Есть умный способ добиться того, что я хотеть? Спасибо за любые подсказки!

+0

Похоже, что проблема на самом деле связана с этим HTTP: //serverfault.com/questions/212071/serveralias-not-working – leo

ответ

0

Solution создает символическую ссылку, если у вас есть доступ к корневому документу:

ln -s /<path to application> /<document root>/foo 
1

Вам действительно нужно добавить строку запроса (QSA) для перенаправления домена?

Попробуйте правило без него:

RewriteRule (.*) http://domain1.com/$1 [R=301] 
+0

Вы правы в QSA, однако это не решает проблему. Переадресация домена работает нормально, но часть «niceurl» не сохраняется. (Причина, по которой я хочу, чтобы полные URL-адреса работали, что доменное имя является IDN, и многие люди по-прежнему используются для замены å с помощью a, ö с o и т. Д. В именах доменов, следовательно, будут ссылки, подобные тому, что указывает на сайт) – leo

Смежные вопросы