我遇到了解这个mod_rewrite
表达式的问题。我正在使用local xampp environment
,其root
目录中有一个名为htdocs
的目录。当我像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
只有在条件成立时才会有效。但这种情况的目的是什么呢?它在这种情况下的作用。
答案 0 :(得分:1)
此规则的目的是不匹配任何静态文件(定义为以.css,.js,.png,.jpg,.gif或robots.txt结尾,不区分大小写)。任何与规则匹配的请求(即不以任何指定字符串结尾)都将传递给index.php。
例如:如果请求是/images/logo.png
,则以.png
结束,这意味着它满足括号之间的条件,因此不满足整个表达式。因此,它不会传递给index.php
。
但是,对/blog/hello-world/
的请求不会以提到的字符串之一结束,因此它满足整个表达式。因此它将由index.php
处理。