Mod rewrite 如何解释以下mod_重写条件?

Mod rewrite 如何解释以下mod_重写条件?,mod-rewrite,Mod Rewrite,我有以下重写条件 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) 我已经阅读了Apache mod_重写手册,但是我很难解释上面的内容 我知道条件RewriteCond%{REQUEST\u FILENAME}-f表示请求的文件名是否丢失 条件RewriteCond%{REQU

我有以下重写条件

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
我已经阅读了Apache mod_重写手册,但是我很难解释上面的内容

  • 我知道条件
    RewriteCond%{REQUEST\u FILENAME}-f
    表示请求的文件名是否丢失

  • 条件
    RewriteCond%{REQUEST\u FILENAME}-d
    表示请求的目录是否丢失

  • 我不知道什么是
    RewriteCond%{REQUEST\u URI}.*\。(ico | gif | jpg | jpeg | png | js | css)

  • 我的理解是,如果条件的计算结果为真,则将应用规则处理条件,但我处理条件的规则是
    RewriteRule^([^?]*)index.php?\u route\uu=$1[L,QSA]

    因为我还不知道第3点指的是什么,如果第1点的计算结果为真,即请求文件丢失,第2点,即请求目录丢失,那么请执行
    RewriteRule^([^?]*)index.php?\u route=$1[L,QSA]

    编辑

    经过进一步的研究,似乎
    RewriteCond%{REQUEST\u FILENAME}-f
    重写cond%{REQUEST_FILENAME}-当文件或目录中的任何东西都没有,而不是它们丢失。

    < P>最后一行是说:“所请求的URI不以列出的后缀中的一个结尾。”(严格地说,正如KingCrunch指出的,它检查是否有一个后缀在字符串中,无论是在结尾还是在中间)。 如果条件为真,则应用规则以下条件;条件前面的规则是独立的,与条件没有关联

    如果条件1、条件2和条件3的计算结果均为true,则将执行以下规则,这是正确的

    要分解最后一个正则表达式,请执行以下操作:

    表示不匹配,即,如果请求URI与表达式不匹配

    *
    表示任何字符零次或多次

    \.
    表示句点(或句号)——这是用反斜杠转义的,因为否则
    表示任何字符

    (ico | gif | jpg | jpg | png | js | css)
    指由垂直条分隔的字符串之一,即“
    ico
    gif
    jpg
    等。”

    如果编写的正则表达式以
    $
    (字符串结束标记)结尾,则后缀后不能有字符;如现在所写,任何字符都可以跟在后面

    因此,RewriteCond检查请求URI是否与某些字符不匹配,后跟句点,后跟列出的文件类型后缀之一。如果没有,则该条件的计算结果为true。

    最后一个条件表示“当
    请求\u URI
    不包含[1]个'ico'、'gif'、'jpg'(等等)时”。当所有三条规则的计算结果均为
    true
    时,将应用(未显示)
    RewriteRule


    [1] 这是一种。。。不完整,因为它应该说“不以结束”,但它不是。但这是另一点:)

    谢谢KingCrunch。你说
    应该说“ends in”是什么意思?
    我还认为不需要用“\”转义元字符,例如
    在示例
    *\.
    中“它应该结束”(事实上“不应该结束”。首先错过了
    )),因为当前条件也匹配,例如
    my.jpg.php
    ,可能期望/想要什么,也可能不期望/想要什么。正则表达式中的
    表示“任何字符”,因此如果你想要一个文本
    ,它当然必须被转义。我没有完全理解你所说的
    的意思,它检查字符串中是否有一个后缀,不管是在末尾还是中间。
    你介意详细说明一下吗?@PeanutsMonkey编辑。我希望这个解释是有道理的。不幸的是,我不知道任何好的正则表达式教程的链接,但是如果你在互联网上搜索的话,那里有很多。事实上,经常有大量的过剩。这非常有帮助。关于指令
    %{REQUEST\u FILENAME}
    如何工作,我仍然感到困惑。例如,如果我有URI
    www.domain.com/directory1/filename1.whatever
    它在验证什么?@PeanutsMonkey在这种情况下,
    %{REQUEST\u FILENAME}
    正在验证
    /directory1/filename1.whatever