我正在安装phpancake, 有一个像这样的文件夹
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]
答案 0 :(得分: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]
这相当于原始陈述。
答案 1 :(得分:0)
这些主要是标准重写,用于检查磁盘上是否存在所请求的文件(或目录或符号链接),在这种情况下是文件/目录/ etc。应该使用。
所有其他比赛应该转至/votes/public/index.php
答案 2 :(得分:0)
第一条规则将传递所有可以映射到大小大于零(-s
)的常规文件,符号链接(-l
)或目录({{1 }})。第二条规则获取所有其他请求,并将其重写为 /vote/public/index.php 。