Apache Mod 重写:带有 L 参数的 RewriteRule.怎么了?
我正在开发一个 php 应用程序,我在使用 Apache 和 Mod Rewrite 时遇到了一个小问题.有人知道这里出了什么问题吗?:
I'm developing a php application and I have a little issue with Apache and Mod Rewrite. Anyone knows what's wrong here?:
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不停止重写过程?
When I put http://localhost/css/css.css appears index.php, maybe I'm missing something... Why when the url matchs with the first rule apache doesn't stop the rewriting process?
'last|L'(最后一条规则)
'last|L' (last rule)
在这里停止重写过程并不要再应用任何重写规则.这对应于 Perl 最后命令或来自C语言.使用这个标志来防止当前重写的 URL 来自按照以下规则进一步重写.例如,使用它来重写根路径 URL ('/') 到一个真实的,例如,/e/www/".
Stop the rewriting process here and don't apply any more rewriting rules. This corresponds to the Perl last command or the break command from the C language. Use this flag to prevent the currently rewritten URL from being rewritten further by following rules. For example, use it to rewrite the root-path URL ('/') to a real one, e.g., '/e/www/'.
我已经阅读了 3 个小时以来的论坛和文档,但我仍然遇到同样的问题.
I have readed forums and docs since 3 hours and I still have the same problem.
提前致谢.
推荐答案
我找到了解决方案:
RewriteEngine on
RewriteBase /mysite/
RewriteRule ^css/css.css css/css.php [L]
RewriteRule ^css/(.*)$ css/$1 [L]
RewriteRule ^js/js.js js/js.php [L]
RewriteRule ^js/(.*)$ js/$1 [L]
RewriteRule ^img/(.*)$ img/$1 [L]
RewriteRule ^(.*)$ index.php?rewrite=$1
它工作正常,但我不知道为什么有必要
It works fine, but I don't know why it's necessary
RewriteRule ^css/(.*)$ css/$1 [L]
和
RewriteRule ^js/(.*)$ js/$1 [L]
希望对大家有所帮助.
谢谢!:)
相关文章