gpt4 book ai didi

regex - Apache mod_rewrite REDIRECT_STATUS 条件导致目录列表

转载 作者:行者123 更新时间:2023-12-01 22:34:46 33 4
gpt4 key购买 nike

我有以下 htaccess 重写规则。防止循环的单规则条件最初是这样写的:

RewriteCond %{ENV:REDIRECT_STATUS} ^.

它曾经工作得很好,直到它突然停止工作,导致 Apache 显示网站的目录列表。

我必须将其更改为新形式,如下面的 list 所示,才能使其再次工作:

RewriteCond %{ENV:REDIRECT_STATUS} 200

您知道这种行为的原因吗?

谢谢

RewriteEngine on
RewriteBase /

## Permanent 301

## Force to www. Un-comment in production.
RewriteCond %{HTTP_HOST} !^www\.myhost\.com [NC]
RewriteRule ^(.*) http://www.myhost.com/$1 [L,R=301]

## Permanent redirect rules for contents

RewriteRule ^argument/programming/?$ tags/programming [NC,L,R=301]

## Internal Redirect Loop Protection
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

## Maintenance page
#RewriteRule (.*) special/maintenance.html

## Specials
RewriteRule special/(.*) special/$1 [NC,L]

## Static resources
RewriteRule ^(.*\.(js|ico|gif|jpg|png|css|rss|xml|htm|html|pdf|zip|gz|txt))$ public/$1 [NC,L]

## Front Controller
RewriteRule ^(.*) public/index.php [NC,L]

最佳答案

您有以下条件可以停止循环:

## Internal Redirect Loop Protection
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

这通过检查内部 Apache 变量 %{ENV:REDIRECT_STATUS} 来实现。该变量在重写模块开始时为空,但在第一次成功的内部重写发生时设置为 200。上述条件表示在第一次成功重写后退出进一步重写并停止循环。

关于regex - Apache mod_rewrite REDIRECT_STATUS 条件导致目录列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13121297/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com