繁体   English   中英

在Apache 2.4中使用重写规则循环

[英]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->BB->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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM