我试图改变htacces中的一些东西,我试图做这样的事情:
RewriteCond %{REQUEST_URI} ^/(.*).xml$
RewriteCond %{HTTP_HOST} ^([^.]{2})\. [OR] [NC]
RewriteCond %{HTTP_HOST} !^$ [NC]
RewriteRule ^(.+)$ sitios/es/$1 [L]
如果我将RewriteRule更改为这样的工作正常:
RewriteRule ^(.+)$ sitios/es/something [L]
我猜这个问题是1美元,因为我收到了内部错误 我可能做错了什么?
答案 0 :(得分:1)
看起来你的规则创造了一个无限循环。
例如,如果我访问ab.example.com/anything.xml
:
%{REQUEST_URI}
/anything.xml
与^/(.*).xml$
匹配,括号与anything
匹配。
%{HTTP_HOST}
是ab.example.com
,匹配^([^.]{2})\.
,括号匹配ab
%{HTTP_HOST}
的第二个条件也匹配,因为ab.example.com
不是空字符串(^$
匹配空字符串)
最后,RewriteRule将请求URL路径(anything.xml
)与^(.+)$
匹配,这是正常的,括号(稍后使用$1
引用)包含anything.xml
因此,我对ab.example.com/anything.xml
的请求在内部被重定向(因为您没有R
标志)到ab.example.com/sitios/en/anything.xml
,这也符合(see why)上述所有规则,所以它会被内部重定向到ab.example.com/sitios/en/sitios/en/anything.xml
,它也会匹配,依此类推等等......