【问题标题】:apache2 vhost redirectionapache2 虚拟主机重定向
【发布时间】:2011-08-23 09:14:10
【问题描述】:

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

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

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

所以,最后,我想在我的网址栏中输入:
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>

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

有人有想法吗?

谢谢你。

【问题讨论】:

  • 只看那个虚拟主机,您只为域 pp15.mv 上的请求设置了重写规则。您是否尝试访问除此之外的域的重定向?据我所知,您仍然需要为其他域提供虚拟主机(或至少是别名),但我可能错了。
  • 我只尝试从 pp15.mv 域访问,我没有列出我拥有的任何 vhost,仅一个例如,另一个完全一样。

标签: apache2 redirect virtual-hosts


【解决方案1】:

好的,我终于做到了:

<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],因为应用程序有内部重定向,并且没有文档根目录,因为 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/

【讨论】:

    猜你喜欢
    • 2015-08-16
    • 2023-03-04
    • 2014-08-21
    • 2020-12-12
    • 2019-04-16
    • 2013-02-05
    • 2019-01-01
    • 2014-10-29
    相关资源
    最近更新 更多