我需要更改我的.htaccess
,有两行我不明白。
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
什么时候应该使用这些线?
答案 0 :(得分:203)
不是提供完整教程的地方,但这里是简短的;
RewriteCond基本上意味着“只有在这是真的时才执行下一个RewriteRule”。 !-l
路径是请求不适用于链接的条件(!
表示不是,-l
表示链接)
RewriteRule基本上意味着如果请求完成匹配^(.+)$
(匹配除服务器根目录之外的任何URL),它将被重写为index.php?url=$1
,这意味着请求{ {1}}将被重写为olle
)。
index.php?url=olle
表示如果有一个与原始网址一起传递的查询字符串,则会将其附加到重写中(QSA
将被重写为olle?p=1
。
index.php?url=olle&p=1
表示如果规则匹配,则不再处理此规则以下的RewriteRules。
有关此内容的更完整信息,请点击上面的链接。重写支持可能有点难以理解,但是有很多关于stackoverflow的例子可供学习。
答案 1 :(得分:7)
如果满足以下条件,则重写URL:
如果请求的文件名不是目录,
RewriteCond %{REQUEST_FILENAME} !-d
如果请求的文件名不是存在的常规文件,
RewriteCond %{REQUEST_FILENAME} !-f
如果请求的文件名不是符号链接,
RewriteCond %{REQUEST_FILENAME} !-l
然后按以下方式重写URL:
获取整个请求文件名并将其作为" url"的值。查询index.php的参数。将原始URL中的任何查询字符串作为进一步的查询参数(QSA)附加,并停止处理此.htaccess文件(L)。
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
答案 2 :(得分:0)
这将捕获version
等文件的请求,
应该是release
和README.md
等
作为端点处理,如果定义(如在
案件/释放),或"未找到。"