我需要改变我的.htaccess,有两行我不明白.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)
什么时候应该使用这些线?
Joa*_*son 211
不是提供完整教程的地方,但在这里它是简短的;
RewriteCond基本上意味着"只有在这是真的时才执行下一个RewriteRule".的!-l路径是该请求不是用于一个链接的条件(!意味着不,-l意味着链路)
的重写规则基本上意味着,如果该请求被进行匹配^(.+)$(除了服务器根任何URL匹配)时,将被重写为index.php?url=$1这意味着为一个请求olle将被改写为index.php?url=olle).
QSA意味着如果有一个与原始URL一起传递的查询字符串,它将被附加到重写(olle?p=1将被重写为index.php?url=olle&p=1.
L 表示如果规则匹配,则不再处理此规则以下的RewriteRules.
有关此更完整的信息,请点击上面的链接.重写支持可能有点难以掌握,但是有很多关于stackoverflow的例子可供学习.
如果满足以下条件,则重写URL:
如果请求的文件名不是目录,
RewriteCond %{REQUEST_FILENAME} !-d
Run Code Online (Sandbox Code Playgroud)
如果请求的文件名不是存在的常规文件,
RewriteCond %{REQUEST_FILENAME} !-f
Run Code Online (Sandbox Code Playgroud)
如果请求的文件名不是符号链接,
RewriteCond %{REQUEST_FILENAME} !-l
Run Code Online (Sandbox Code Playgroud)
然后按以下方式重写URL:
获取整个请求文件名,并将其作为"url"查询参数的值提供给index.php.将原始URL中的任何查询字符串作为进一步的查询参数(QSA)附加,并停止处理此.htaccess文件(L).
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)