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

标签 apache .htaccess mod-rewrite

目前我正在本地计算机上构建应用程序。应用位于 /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/

相关文章:

apache - 如何使用 Apache 反向代理动态 url

regex - 如何为 htaccess 正则表达式定义 url 占位符 $1

css - 无法在 MAMP 本地主机中呈现 CSS

python - 使用 FastCGI 或 mod_python 运行 Django

web-services - 如何使用 oAuth 2.0 保护 apache cxf webservice(jax-ws)

javascript - HTML 默认 href 值

apache - 为什么我的 .htaccess 仅针对 https/ssl 没有将 uri 路径重定向到 index.php?

.htaccess - 使用带有 .htaccess 重写的 SSL 证书

php - zend 站点也需要别名

apache - htaccess将DirectoryIndex优先级更改为php而不是html