当前位置:  开发笔记 > 编程语言 > 正文

Apache Mod Rewrite:带L参数的RewriteRule.怎么了?

如何解决《ApacheModRewrite:带L参数的RewriteRule.怎么了?》经验,为你挑选了1个好方法。

我正在开发一个php应用程序,我对Apache和Mod Rewrite有一点问题.谁知道这里有什么问题?:

RewriteEngine on
RewriteBase /mysite/
RewriteRule ^css\/css\.css css/css.php [L]
RewriteRule ^js\/js\.js js/js.php [L]
RewriteRule !^img\/.* index.php

当我把http://localhost/css/css.css出现在index.php时,也许我错过了什么......为什么当url与第一个规则apache匹配时不会停止重写过程?

'last | L'(最后一条规则)

停止重写过程,不再应用任何重写规则.这对应于Perl last命令或C语言的break命令.使用此标志可防止按照以下规则进一步重写当前重写的URL.例如,使用它将根路径URL('/')重写为真实的URL,例如'/ e/www /'.

我从3个小时开始重写论坛和文档,我仍然遇到同样的问题.

提前致谢.



1> Boldewyn..:

Centauro12,问题是,[L]标志实际上通过以下规则停止传播,但随后(如果你在.htaccess文件中)URL映射重新开始.这意味着,您的所有规则将再次处理.有关详细信息,请参阅Apache Rewrite Guide.

因此,您需要显式禁用重写的PHP脚本的重写:

RewriteRule ^css/css.php - [L]
RewriteRule ^js/js.php - [L]

或更紧凑(虽然可能不是你想要的):

# don't rewrite anything that really exists
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有