这个重写规则是什么意思?

str*_*ade 7 .htaccess rewrite http rule

我正在安装phpancake,有一个像这样的文件夹

application/
install/
library/
public/
sql_schema/
install.html
install.php
Run Code Online (Sandbox Code Playgroud)

这条规则意味着什么?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /vote/public/index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)

Tat*_*nen 11

重写有两个部分.第一个指定如果请求的文件名是大小大于0(-s)的符号链接(-l)或目录(-d)的常规文件,则重写为无处,例如.不采取行动.[NC,L]表示该规则不区分大小写,以及这些条件匹配的最后一条规则.

所有其他请求都转发给/vote/public/index.php.

此重写的目的是可以从服务器获取实际的现有文件而不会产生干扰.如果没有第一条规则,每个文件请求(css和js文件,图像等)都会变得index.php非常糟糕.

通常这是用一个声明写的.你可以否定条件,然后[OR]也可以取出statemens:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /vote/public/index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)

这相当于原始陈述.