使用mod_rewrite重定向.dev域

时间:2016-02-08 21:54:07

标签: .htaccess mod-rewrite apache2.4

Apache 2.4 docs on dynamic virtual hosts中,它说:

  

使用mod_rewrite

的批量虚拟主机      

大规模虚拟主机也可以使用mod_rewrite来完成,可以使用简单的RewriteRule指令,也可以使用更复杂的技术,例如在外部存储vhost定义并通过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]

我可以访问这些文件,但网址会发生变化(不是我想要的)。我尝试了各种带有和不带斜线的排列,RewriteBase等。

要明确,我希望project.dev/index.phplocalhost/project/index.php都是/var/www/html/project/index.php的有效非重定向引用。我想以动态方式执行此操作,因此我无需为每个文件夹输入一组新规则。

我没有注意用.htaccess这样做 - 虚拟主机也可以,只要它们是动态的,我仍然可以使用localhost / scheme访问我的网站,网络上的其他机器可以连接到样本通常的方式(192.168.1.22/project/index.php)。

1 个答案:

答案 0 :(得分:1)

尝试此规则:

RewriteEngine on

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