我有这个例子,它在这种情况下工作正常,但我想根据域名动态地重定向到子文件夹。如何将example.com替换为当前域?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule !^example.com/ /example.com%{REQUEST_URI} [L,NC]
</IfModule>
我尝试过这样的事情:(但收到内部错误)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule !^$1/ /$1%{REQUEST_URI} [L,NC]
</IfModule>
谢谢
答案 0 :(得分:1)
您可以使用以下内容:
RewriteEngine on
RewriteCond %{ENV_REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^ /%1%{REQUEST_URI} [L]
第一条规则很重要,因为它会在第二次迭代时终止重写处理并防止循环错误。
答案 1 :(得分:0)
反向引用为%1
,因为它来自最后一个RewriteCond
。但是你不能使用它,因为这些反向引用只会在替换中被识别,参见RewriteRule
除了纯文本,替换字符串可以包含
- 反向引用($ N)到RewriteRule模式
- 反向引用(%N)到最后匹配的RewriteCond模式
醇>
或RewriteCond
测试字符串
TestString 是一个字符串,除了纯文本外,还可以包含以下扩展结构:
- RewriteCond反向引用:这些是%N 形式的反向引用(0 <= N <= 9)。 %1到%9提供对模式的分组部分(同样,在括号中)的访问,从当前条件集中的最后匹配的RewriteCond。 %0提供对该模式匹配的整个字符串的访问。
因此,作为结论,您无法在规则模式中使用它,例如
RewriteRule pattern substitution
或条件模式
RewriteCond teststring condpattern