在我的.htaccess文件中$ 1 [QSA,L]是什么意思?

时间:2012-09-23 10:05:09

标签: .htaccess

我需要更改我的.htaccess,有两行我不明白。

RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

什么时候应该使用这些线?

3 个答案:

答案 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等文件的请求, 应该是releaseREADME.md等 作为端点处理,如果定义(如在 案件/释放),或"未找到。"