我正在尝试使用实现,.htaccess
所以我可以使用一个虚拟主机设置和在hosts文件中定义的一个URL的配置访问所有项目。这将允许我将项目拖放到文件夹中,并且无需我进行任何其他配置即可工作,并节省了很多工作时间。
示例A:prestige.projects.dev
托管在D:/projects/prestige
etc上。
示例B:newproject.projects.dev
托管在D:/projects/newproject
etc上。
下面的代码适用于示例A的特定情况,但是我无法弄清楚如何使其在所有项目中“动态”运行。我的目标是制作prestige
通配符。例如:newproject.projects.dev
应该自动加载的内容D:/projects/newproject
。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^prestige\.projects\.dev$
RewriteCond %{REQUEST_URI} !^/prestige/
RewriteRule (.*) /prestige/$1
只要实现目标,我就可以接受除此方法之外的其他建议。
请尝试以下类似的方法:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([a-z]+)\.projects\.dev [NC]
RewriteCond "%{REQUEST_URI} /%1" !^(/[^/]+)[^\s]*\s\1$
RewriteRule (.*) /%1/$1 [L]
%1
是对最后匹配的CondPattern中捕获的组的反向引用。
第二个RewriteCond
指令是您的硬编码检查的“通配符”版本,以确保该名称REQUEST_URI
尚未从与子域匹配的目录开始-从而防止了重写循环。
字符串%{REQUEST_URI} /%1
(/<directory>/<anything> /<subdomain>
第一次重写后将扩展为形式为“ ”的字符串)与regex匹配^(/[^/]+)[^\s]*\s\1$
,后者检查是否与regex/<directory>
相同/<subdomain
(\1
是对regex中捕获组的内部反向引用)。仅当这不匹配时,RewriteRule
替换才会发生-与您当前规则的工作方式相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句