【发布时间】:2016-05-18 17:34:57
【问题描述】:
在Apache 2.4 docs on dynamic virtual hosts 中,它说:
使用 mod_rewrite 的海量虚拟主机
大规模虚拟主机也可以使用 mod_rewrite 来完成,或者使用简单的 RewriteRule 指令,或者使用更复杂的技术,例如在外部存储虚拟主机定义并通过 RewriteMap 访问它们。这些技术在重写文档中进行了讨论。
我正在尝试使用 mod_rewrite 而不是 mod_vhost_alias,因为我想要两种方式:localhost/project 和 project.dev 应该指向同一个文件夹,但任何一个 URL 都应该可以工作。
这是我最近的尝试(目前在 .htaccess 中),它得到了一个可爱的 500 错误。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.dev$ [NC]
RewriteRule ^(.*)$ /%1/$1 [L,QSA]
如果我这样做
...
RewriteRule ^(.*)$ http://localhost/%1/$1 [L,QSA]
我可以访问这些文件,但是 URL 发生了变化(不是我想要的)。我尝试了各种带有和不带有斜杠、RewriteBase 等的排列。
明确地说,我希望project.dev/index.php 和localhost/project/index.php 都是对/var/www/html/project/index.php 的有效非重定向引用。而且我想以动态方式执行此操作,因此我不需要为每个文件夹输入一组新规则。
我并不专注于使用 .htaccess 执行此操作 - 虚拟主机也可以,只要它们是动态的,我仍然可以使用 localhost/ 方案访问我的站点,并且网络上的其他机器可以连接到示例以通常的方式访问网站 (192.168.1.22/project/index.php)。
【问题讨论】:
标签: .htaccess mod-rewrite apache2.4