在我的.htaccess文件中,$ 1 是什么意思?
我需要改变我的.htaccess
,有两行我不明白。
RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
当我应该使用这些线?
不是给一个完整的教程的地方,但这里是简短的;
RewriteCond基本上是指“只有在这种情况下才执行下一个RewriteRule”。 !-l
path是请求不是链接的条件( !
表示不是, -l
表示链接)
RewriteRule基本上意味着如果请求完成匹配^(.+)$
(匹配除了服务器根之外的任何URL),它将被重写为index.php?url=$1
,这意味着olle
的请求将被重写为index.php?url=olle
。
QSA
意味着如果有一个查询string与原始URL一起传递,它将被附加到重写( olle?p=1
将被重写为index.php?url=olle&p=1
。
L
意味着如果规则匹配,不要在这个之下处理更多的RewriteRules。
要获得更完整的信息,请点击上面的链接。 重写支持可能有点难以理解,但是在stackoverflow上学习的例子还是不less的。
如果以下条件成立,则重写url:
如果请求的文件名不是目录,
RewriteCond %{REQUEST_FILENAME} !-d
并且如果请求的文件名不是存在的常规文件,
RewriteCond %{REQUEST_FILENAME} !-f
如果请求的文件名不是符号链接,
RewriteCond %{REQUEST_FILENAME} !-l
然后按以下方式重写URL:
取整个请求文件名,并将其作为“url”查询参数的值提供给index.php。 将原始URL中的任何查询string追加为进一步查询参数(QSA),并停止处理该.htaccess文件(L)。
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
这将捕获对version
, release
和README.md
等文件的请求,这些文件应被视为端点,如果已定义(如/ release),或者“未find”。
我要省下10秒的时间
QSA意味着如果有一个查询string与原始URL一起传递 ,它将被附加到重写( olle?p=1
将被重写为index.php?url=olle&p=1
)。