Tim*_*ido 10 apache mod-rewrite
我有以下htaccess重写规则.防止循环的一个规则条件最初是这样编写的:
RewriteCond %{ENV:REDIRECT_STATUS} ^.
Run Code Online (Sandbox Code Playgroud)
它曾经工作得很好,直到它突然停止工作,导致Apache显示网站的目录列表.
我必须将它更改为这个新表单,如下面的清单,让它再次工作:
RewriteCond %{ENV:REDIRECT_STATUS} 200
Run Code Online (Sandbox Code Playgroud)
你知道这种行为的原因吗?
谢谢
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]
Run Code Online (Sandbox Code Playgroud)
你有这个条件停止循环:
## Internal Redirect Loop Protection
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
Run Code Online (Sandbox Code Playgroud)
这通过检查内部Apache变量来工作%{ENV:REDIRECT_STATUS}.此变量在重写模块开始时为空,但在第一次成功进行内部重写时设置为200.上述条件表示在首次成功重写并停止循环后进一步重写保释.
| 归档时间: |
|
| 查看次数: |
11091 次 |
| 最近记录: |