Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何根据主机名或IP地址动态更改RewriteBase?_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

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文件。