9

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

application/
install/
library/
public/
sql_schema/
install.html
install.php

这个规则是什么意思?

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]
4

3 回答 3

14

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

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

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

不过,通常这是写在一个声明中的。您可以否定条件,然后[OR]也可以取出语句:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /vote/public/index.php [NC,L]

这相当于原来的说法。

于 2010-01-15T20:24:26.747 回答
0

这些主要是标准重写,检查请求的文件(或目录或符号链接)是否存在于磁盘上,在这种情况下文件/目录/等。应该使用。

所有其他比赛应该去 /votes/public/index.php

于 2010-01-15T20:23:44.397 回答
0

第一条规则将通过所有可以映射到大小大于零的常规文件 ( -s)、符号链接 ( -l) 或目录 ( -d) 的请求。第二条规则获取所有其他请求并重写到 /vote/public/index.php

于 2010-01-15T20:23:49.880 回答