2017-08-31 53 views
0

我在理解这个mod_rewrite表达式时遇到了一个问题。我正在使用local xampp environment,在htdocs目录中有一个名为root的目录。当我在地址栏输入localhost/root时,它会打开index.php页面。这是.htaccess文件的代码。这个重写条件到底是什么?

RewriteEngine on 
RewriteBase /root/ 
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC] 
RewriteRule ^.*$ index.php [NC,L] 

我面临line no 3一个问题,我知道,当条件为真RewriteRule才会工作。但是这种情况的目的是什么。它在这种情况下做了什么。

回答

1

此规则的目的是不匹配任何静态文件(定义为以.css,.js,.png,.jpg,.gif或robots.txt结尾,不区分大小写)。任何匹配规则的请求(即不在任何指定的字符串上结束)将被传递给index.php。

例如:如果请求是用于/images/logo.png,它与.png这意味着它确实满足了括号之间的状态,因此不能满足整个表达式结束。所以,它不会传递到index.php。 但是,/blog/hello-world/的请求不会以提到的字符串之一结束,因此它会满足整个表达式。因此它将被index.php处理。

+0

您能否请您解释一下这个简单的例子 –

+0

我希望这个解释有助于:) –