使用 mod_rewrite 重定向 .dev 域



在动态虚拟主机上的Apache 2.4文档中,它说:

具有mod_rewrite的批量虚拟主机

大规模虚拟主机也可以使用mod_rewrite来完成,可以使用简单的RewriteRule指令,或者使用更复杂的技术,例如在外部存储虚拟定义并通过RewriteMap访问它们。重写文档中讨论了这些技术。

我正在尝试使用 mod_rewrite 而不是 mod_vhost_alias,因为我想要两种方式:本地主机/项目和 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.phplocalhost/project/index.php都是对/var/www/html/project/index.php的有效非重定向引用。我想以动态的方式执行此操作,因此我不需要为每个文件夹输入一组新规则。

我不执着于使用 .htaccess 执行此操作 - 虚拟主机也可以,只要它们是动态的,并且我仍然可以使用 localhost/方案访问我的站点,并且网络上的其他机器可以以通常的方式连接到示例站点(192.168.1.22/project/index.php(。

试试这个规则:

RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^(.+).dev$ [NC]
RewriteRule ^(.*)$ /%1/$1 [L]

最新更新