How can I set the RewriteBase in my .htaccess file to the first part of the REQUEST_URI (domain.com/path or domain.com/path/to/file would set RewriteBase to /path)?
问问题
1689 次
1 回答
2
您不能动态设置RewriteBase
,但您可以手动从 中提取第一个路径%{REQUEST_URI}
并手动将其添加到绝对URL 路径目标。例子:
RewriteBase /
RewriteCond %{REQUEST_URI} ^/([^/]+)
RewriteRule ^foo$ /%1/bar.html [L]
在这里,如果该规则位于 URL-path 的 htaccess 文件中/a/b/c
,并且您请求/a/b/c/foo
,则该规则会将其重写为/a/bar.html
.
或者,如果您有很多规则并且您绝对需要%
反向引用,则可以将其设置为 htaccess 文件顶部的环境变量:
RewriteBase /
RewriteCond %{ENV:first_uri_path} ^$
RewriteCond %{REQUEST_URI} ^/([^/]+)
RewriteRule ^ - [E=first_uri_path:%1]
# then your rules:
RewriteCond %{HTTP_HOST} www\.(.*)
RewriteRule ^foo$ /%{ENV:first_uri_path}/bar.php?domain=%1 [L]
不确定这对您来说有多可行,具体取决于您实际计划使用“动态 RewriteBases”做什么。
于 2013-07-23T17:53:39.143 回答