使用 .htaccess 以根目录动态加载子域文件夹
Dynamically load subdomains folder as root with .htaccess
我正在尝试使用 .htaccess
来实现,这样我就可以使用一个虚拟主机设置的配置访问我的所有项目,并在主机文件中定义一个 URL。这将允许我将一个项目拖放到文件夹中,它无需我进行任何其他配置即可运行,并在工作时节省大量时间。
示例 A:prestige.projects.dev
托管在 D:/projects/prestige
等
示例 B:newproject.projects.dev
托管在 D:/projects/newproject
等
下面的代码适用于示例 A 的特定情况,但我不知道如何让它适用于所有项目 'dynamically'。我的目标是使 prestige
成为通配符。例如:newproject.projects.dev
应该 自动 加载D:/projects/newproject
的内容。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^prestige\.projects\.dev$
RewriteCond %{REQUEST_URI} !^/prestige/
RewriteRule (.*) /prestige/
只要达到目标,我愿意接受除此方法之外的其他建议。
试试下面的方法:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([a-z]+)\.projects\.dev [NC]
RewriteCond "%{REQUEST_URI} /%1" !^(/[^/]+)[^\s]*\s$
RewriteRule (.*) /%1/ [L]
%1
是对最后匹配的 CondPattern.
中捕获组的反向引用
第二个 RewriteCond
指令是硬编码检查的 "wildcard" 版本,以确保 REQUEST_URI
没有以与子域匹配的目录开始 - 从而防止重写循环。
字符串 %{REQUEST_URI} /%1
(在第一次重写后扩展为“/<directory>/<anything> /<subdomain>
”形式的字符串)与正则表达式 ^(/[^/]+)[^\s]*\s$
匹配,后者检查是否 /<directory>
与 /<subdomain
相同(</code> 是对正则表达式中捕获组的内部反向引用)。只有当这不匹配时,才会发生 <code>RewriteRule
替换 - 与您当前规则的工作方式相同。
我正在尝试使用 .htaccess
来实现,这样我就可以使用一个虚拟主机设置的配置访问我的所有项目,并在主机文件中定义一个 URL。这将允许我将一个项目拖放到文件夹中,它无需我进行任何其他配置即可运行,并在工作时节省大量时间。
示例 A:prestige.projects.dev
托管在 D:/projects/prestige
等
示例 B:newproject.projects.dev
托管在 D:/projects/newproject
等
下面的代码适用于示例 A 的特定情况,但我不知道如何让它适用于所有项目 'dynamically'。我的目标是使 prestige
成为通配符。例如:newproject.projects.dev
应该 自动 加载D:/projects/newproject
的内容。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^prestige\.projects\.dev$
RewriteCond %{REQUEST_URI} !^/prestige/
RewriteRule (.*) /prestige/
只要达到目标,我愿意接受除此方法之外的其他建议。
试试下面的方法:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([a-z]+)\.projects\.dev [NC]
RewriteCond "%{REQUEST_URI} /%1" !^(/[^/]+)[^\s]*\s$
RewriteRule (.*) /%1/ [L]
%1
是对最后匹配的 CondPattern.
第二个 RewriteCond
指令是硬编码检查的 "wildcard" 版本,以确保 REQUEST_URI
没有以与子域匹配的目录开始 - 从而防止重写循环。
字符串 %{REQUEST_URI} /%1
(在第一次重写后扩展为“/<directory>/<anything> /<subdomain>
”形式的字符串)与正则表达式 ^(/[^/]+)[^\s]*\s$
匹配,后者检查是否 /<directory>
与 /<subdomain
相同(</code> 是对正则表达式中捕获组的内部反向引用)。只有当这不匹配时,才会发生 <code>RewriteRule
替换 - 与您当前规则的工作方式相同。