别名和rewriterules一起工作

时间:2012-05-26 12:30:32

标签: apache url-rewriting httpd.conf short-url

我有多个域名指向一个Apache2虚拟主机:

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

要始终显示相同的网址,我使用这样的重写:

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时,浏览器中显示的网址将为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

有没有一种聪明的方法来实现我想要的?谢谢你的任何提示!

2 个答案:

答案 0 :(得分:1)

您是否真的需要在域重定向上使用查询字符串附加(QSA)?

在没有它的情况下尝试你的规则:

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

答案 1 :(得分:0)

解决方案是创建符号链接,如果您有权访问文档根目录:

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