目前我正在本地计算机上构建应用程序。应用位于
/www/projects/mycustomproject/
为了访问速度,它有自己的个人域,比如 mycustomproject.com
。我已通过本地网络提供我的 Apache-PHP-MySQL,因此任何人都可以通过 IP 地址访问我的项目,该地址是 192.168.1.80
并且它链接到 /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
最佳答案
为什么不将 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
关于apache - 如何根据主机名或 IP 地址动态更改 RewriteBase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8482210/