apache2 vhost重定向

时间:2011-05-11 14:33:13

标签: apache2 redirect virtual-hosts

我在我的Windows主机文件中定义了不同的主机,每个项目发布一个(rc1,rc2等...) 我想为每个版本创建一个vhost,以便我可以直接重定向到它的子目录,例如:

pp15.mv => http://localhost/mv/pp15/ .....
pp16.mv => http://localhost/mv/pp16/ .....

此外,我需要将主机ppX.mv重定向到自动登录网址,类似于 /mv_dbname.php?login=testlogin&mdp=202cb962ac59075b964b07152d234b70

所以,最后,我想在我的urlbar中输入这个:
http://pp15.mv
并被重定向到
http://pp15.mv/mv_dbname.php?login=testlogin&mdp=202cb962ac59075b964b07152d234b70

在我的虚拟主机文件中,我有类似的内容:

<VirtualHost *:80>
    ServerName pp15.mv
    DocumentRoot "D:\apache\htdocs\mv\pp15"
    <Directory "D:\apache\htdocs\mv\pp15">
        AllowOverride All
        Allow from All
    </Directory>
    RewriteEngine On
    RewriteRule ^/index.php /myvisitv3_dbname.php?login=johsmi&mdp=202cb962ac59075b964b07152d234b70 [R]
    RewriteRule ^(/)?$ /myvisitv3_dbname.php?login=johsmi&mdp=202cb962ac59075b964b07152d234b70 [R]
</VirtualHost>

第一次重定向效果很好,但如果我尝试直接重定向主机,我会收到重定向错误(发生了太多的重定向)

有人有想法吗?

先谢谢你。

1 个答案:

答案 0 :(得分:0)

好的,最后我在这里做了什么:

<VirtualHost *:80>
    ServerName pp16.mv
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^pp16\.mv$ 
    RewriteRule ^(/)?$ /mv/pp16/xxx/xxx_dbname.php?login=johsmi&mdp=202cb962ac59075b964b07152d234b70 [R]
</VirtualHost>
重定向没有[L],因为app有内部重定向,没有文档root,因为php无法正确读取 $ _ SERVER ['REQUESTED_URI'] var,所以我可以做到这(我更喜欢)

<VirtualHost *:80>
    ServerName pp16.mv
    DocumentRoot "D:\apache\htdocs\mv\pp16\xxx"
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^pp16\.mv$ 
    RewriteRule ^(/)?$ /xxx_dbname.php?login=johsmi&mdp=202cb962ac59075b964b07152d234b70 [R]
</VirtualHost>

但是php会误读应用路径( / 而不是 / mv / pp16 / xxx /