在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.php
和localhost/project/index.php
都是/var/www/html/project/index.php
的有效非重定向引用。我想以动态方式执行此操作,因此我无需为每个文件夹输入一组新规则。
我没有注意用.htaccess这样做 - 虚拟主机也可以,只要它们是动态的,我仍然可以使用localhost / scheme访问我的网站,网络上的其他机器可以连接到样本通常的方式(192.168.1.22/project/index.php)。
答案 0 :(得分:1)
尝试此规则:
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^(.+)\.dev$ [NC]
RewriteRule ^(.*)$ /%1/$1 [L]