Ati*_*din 4 apache xampp .htaccess vhosts
我正在尝试在我的本地开发机器上设置一些自动化.通常我会像这样开始我的所有项目
打开Hosts文件,设置一个类似127.0.0.1 example.com www.example.com
Open httpd-vhosts.conf文件的DNS条目并添加一个条目,如下所示
<VirtualHost *>
DocumentRoot "/path/to/xampp/htdocs/example.com"
ServerName example.com
ServerAlias www.example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我想要实现的是以这样的方式设置环境:我不应该在httpd-vhosts.conf每次想要在新主机上工作时添加此条目.
相反,我希望有一个全局条目httpd-vhosts.conf可以处理所有域并将它们映射到各自的目录
所以,如果我的文件中有一个记录列表,hosts就像这样
127.0.0.1 example.com
127.0.0.1 mysite.com
127.0.0.1 google.com
127.0.0.1 abc.com
Run Code Online (Sandbox Code Playgroud)
和这样的文件夹结构
/htdocs/
/example.com/
/mysite.com/
/google.com/
/abc.com/
Run Code Online (Sandbox Code Playgroud)
它应该自动映射到那些目录,而无需VirtualHost在httpd-vhosts.conf文件中添加记录.
我猜这可以通过在httpd-vhosts.conf(我不知道如何)中添加通配符条目然后在.htaccess文件中添加一些重定向规则/htdocs/以将它们映射到它们的目录来实现.
所以最终,
httpd-vhosts.conf.htaccess文件中设置精确的重写规则/htdocs/这是我想到的,也可能有更好的方法来做到这一点.
httpd-vhosts.conf通过*在您通常放置的域名前面放置一个asterix()www
<VirtualHost *>
DocumentRoot "/path/to/xampp/htdocs/example.com"
ServerName example.com
ServerAlias *.example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
RewriteEngine On
#RewriteCond %{HTTP_HOST} ^!example.com #(optional) do not redirect base domain
RewriteCond %{HTTP_HOST} (?(?=[a-z0-9\-\_]+\.[a-z0-9\-\_]{2,}$).+|[a-z0-9\-\_]+\.[a-z0-9\-\_]{2,})$
RewriteRule ^$ http://localhost/%0
Run Code Online (Sandbox Code Playgroud)
所有这些领域:
www.example.com
img.example.com
cdn.example.com
static.img.example.com
Run Code Online (Sandbox Code Playgroud)
将被重定向到/example.com.
说明
基本上,上面的内容是将最后两个字符串分隔为perdiod并将您重定向到新找到的文件夹.
从技术角度来看:
这个正则表达式使用if then|else模式.如果1找到了,那么别管2做3.
进行测试,然后根据文本结果继续使用两个选项之一 (?(?=[a-z0-9-_]+.[a-z0-9-_]{2,}$).+|[a-z0-9-_]+.[a-z0-9-_]{2,}$)
(IF) 断言下面的正则表达式可以匹配,从这个位置开始(正向前瞻) (?=[a-z0-9\-\_]+\.[a-z0-9\-\_]{2,}$)
[a-z0-9\-\_]+
+a-z0-9\-\_\.[a-z0-9\-\_]{2,}
{2,}a-z0-9\-\_$(THEN) 如果测试成功,请匹配下面的正则表达式 .+
.++(ELSE) 如果测试失败,请在测试成功时匹配下面的正则表达式 [a-z0-9\-\_]+\.[a-z0-9\-\_]{2,}$
[a-z0-9\-\_]++a-z0-9\-\_\.[a-z0-9\-\_]{2,}{2,}a-z0-9\-\_$测试套件:
a.bc
ab.cd
abc.def
ab.cd.ef
12.34
12.34.56
1.2.3.4.5.67
cnn.com
no_country.for.old.men
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4510 次 |
| 最近记录: |