如何根据主机名或IP地址动态更改RewriteBase?

时间:2011-12-12 23:04:09

标签: apache .htaccess mod-rewrite

目前我正在本地计算机上构建应用程序。申请位于 /www/projects/mycustomproject/并且为了获得访问速度,它有自己的个人域名,让我们说mycustomproject.com。我通过本地网络提供了我的Apache-PHP-MySQL,因此任何人都可以通过192.168.1.80的IP地址访问我的项目,并将其链接到/www/。 要访问应用程序,您必须输入192.168.1.80/projects/mycustomproject/,然后出现问题,默认情况下mycustomproject.com的配置为:

RewriteEngine on
RewriteBase /

要通过IP地址访问应用程序,它假设为:

RewriteEngine on
RewriteBase /projects/mycustomproject/

问题是如何定义这样的规则:

if REMOTE_ADDR == 192.168.*
   RewriteBase /projects/mycustomproject/
else if HOSTNAME == 'mycustomproject.com'
   RewriteBase /
etc.

可能存在基于主机名或IP地址的其他自定义条件,IF/ELSE语句优于RewriteCond

1 个答案:

答案 0 :(得分:0)

为什么不将mycustomproject设置为自己的virtual host

设置如下的主机:

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

# default root for non-matched ServerName
DocumentRoot /www/

<VirtualHost *:80>
    ServerName local.mycustomproject.com 
    DocumentRoot /www/projects/mycustomproject/
</VirtualHost>

然后,您可以为local.mycustomproject.com创建本地DNS或HOSTS文件条目。

通过这种方式,您可以在本地托管任意数量的项目(只需添加更多<VirtualHost>部分),它们可以非常接近地反映真实的生产环境。

如果您想使用“真实”域名,只需删除“本地”即可。在我的例子中。

您还可以使用ServerAlias设置例如ServerAlias www.local.mycustomproject.com