[英]Loop with rewrite rules in apache 2.4
对于我的Apache 2.4,我需要以下内容:
GET /file.html
> 301重定向到路径/~
GET /~
/file.html
>返回文件/file.html
内容 在我的.htaccess
我有以下内容:
RewriteEngine on
RewriteBase /
RewriteRule ^file.html ~ [R=301,L]
RewriteRule ^~ file.html [L]
但是现在GET /~
返回到/~
的301重定向。 错误在哪里? 我认为,对于GET /~
,第一条规则不适用,第二条规则将返回文件file.html
的内容。 我想用mod_rewrite
吗?
您的规则存在问题,因为这两个规则都是这样重写的,这将导致无限循环: A->B
和B->A
您可以使用此规则来避免循环:
RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} \s/+file\.html\s [NC]
RewriteRule ^ ~ [R=302,L,NE]
RewriteRule ^~$ file.html [L,B]
THE_REQUEST
变量表示Apache从您的浏览器收到的原始请求,在执行某些重写规则后不会被覆盖。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.