Apache 如何根据主机名或IP地址动态更改RewriteBase?
目前我正在本地计算机上构建应用程序。申请位于Apache 如何根据主机名或IP地址动态更改RewriteBase?,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,目前我正在本地计算机上构建应用程序。申请位于 /www/projects/mycustomproject/为了提高访问速度,它有自己的个人域名,比如说mycustomproject.com。我已经通过本地网络提供了我的Apache PHP MySQL,因此任何人都可以通过IP地址访问我的项目,IP地址是192.168.1.80,并且它链接到/www/。 要访问应用程序,您必须键入192.168.1.80/projects/mycustomproject/,问题出现了,默认情况下mycustomp
/www/projects/mycustomproject/
为了提高访问速度,它有自己的个人域名,比如说mycustomproject.com
。我已经通过本地网络提供了我的Apache PHP MySQL,因此任何人都可以通过IP地址访问我的项目,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地址的自定义条件,如果/ELSE语句比
RewriteCond
更可取,为什么不将mycustomproject设置为自己的呢
设置主机,如:
# 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>
#侦听所有IP地址上的虚拟主机请求
名称虚拟主机*:80
#不匹配的ServerName的默认根目录
DocumentRoot/www/
ServerName local.mycustomproject.com
DocumentRoot/www/projects/mycustomproject/
然后,您可以为local.mycustomproject.com创建本地DNS或主机文件条目
通过这种方式,您可以在本地托管任意数量的项目(只需添加更多的
部分),它们非常接近真实的生产环境
如果你想使用“真正的”域名,只需删除“本地”。在我的例子中
您也可以使用来设置,例如,
ServerAlias www.local.mycustomproject.com
它确实有VirtualHost配置,并且链接到mycustomproject.com,并且按照预期工作,问题出在.htaccess RewriteBase中,它被配置为仅对域工作,而不对IP地址工作。它应该可以通过网络访问,并且应该链接到不同的站点。我想我不明白你们想要实现什么。您是否试图同时通过IP+路径或主机名访问站点?为什么?你的问题听起来不对,但这里解释了一个直接的解决方案:对不起,如果我不清楚,我想让我的应用程序在本地网络和本地主机上工作,并具有不同的预设(它可以通过网络访问,无需担心路由器和防火墙)。它的另一个用途是为本地环境和live server创建一个.htaccess文件。