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

问题描述:

目前我在本地计算机上构建应用程序。应用程序位于 /www/projects/mycustomproject/和访问速度它有自己的个人域名,可以说mycustomproject.com。我已通过本地网络提供了Apache-PHP-MySQL,因此任何人都可以通过IP地址访问我的项目,该地址为192.168.1.80,并且链接到/www/。 要为mycustomproject.com访问应用程序,您必须键入192.168.1.80/projects/mycustomproject/,并且来到这里的问题,通过默认的配置是:如何根据主机名或IP地址动态更改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

+0

我想我不明白你要完成的任务。您是否试图通过IP +路径或主机名同时访问该站点?为什么?你的问题听起来不对,但是直接解决它的方法在这里解释:http://*.com/questions/2045897/with-mod-rewrite-can-i-specify-a-rewritebase-within-a-rewritecond – gregmac

+0

对不起,如果我不清楚,我想让我的应用程序在本地网络和本地主机上工作,并具有不同的预设(可通过网络访问,无需担心路由器和防火墙)。它的另一个用途可以是一个用于本地环境和活动服务器的.htaccess文件。 – Nazariy

为什么不只是将自定义项目设置为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

+0

它具有VirtualHost配置,并且它已链接到mycustomproject.com,并且它按预期工作,问题出在.htaccess RewriteBase中,该配置为仅适用于域而不适用于IP地址。它假设可以通过网络访问,并且应该链接到不同的RewriteBase – Nazariy