.htaccess 重写规则不起作用

.htaccess 重写规则不起作用,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正在尝试改变htacces中的一些东西,我正在尝试这样做: RewriteCond %{REQUEST_URI} ^/(.*).xml$ RewriteCond %{HTTP_HOST} ^([^.]{2})\. [OR] [NC] RewriteCond %{HTTP_HOST} !^$ [NC] RewriteRule ^(.+)$ sitios/es/$1 [L] 如果我将RewriteRule更改为类似的内容,则效果很好: RewriteRule ^(.+)$ sitios/es/s

我正在尝试改变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美元,因为我收到了内部错误
我可能做错了什么?

看起来您的规则创建了一个无限循环

例如,如果我访问
ab.example.com/anywhere.xml

  • %{REQUEST_URI}
    是匹配
    ^/(.*).xml$
    /anything.xml
    ,括号将匹配
    anything

  • %{HTTP\u 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
,这也匹配了()上述所有规则,因此它将在内部被重定向到
ab.example.com/sitios/en/sitios/en/anythios.xml
,哪个也匹配等等等等