Apache Mod Rewrite:带有L参数的RewriteRule.怎么了? [英] Apache Mod Rewrite: RewriteRule with L argument. What's wrong?
问题描述
我正在开发一个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最后 命令或break命令 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.
谢谢.
推荐答案
我找到了一个解决方案:
I've found a solution:
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]
我希望它能帮助任何人.
I hope it hepls anyone.
谢谢! :)
这篇关于Apache Mod Rewrite:带有L参数的RewriteRule.怎么了?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!