2016-01-15 30 views
0

我碰到这个指令排在.htaccess文件中laravel项目这个apache rewrite指令是做什么的?

RewriteRule^index.php [L] 

,但我不明白它做什么。这里是周围的指令。

# Handle Front Controller... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

我明白,要作出了最后的重写和^字符是一个新行锚,但似乎没有成为一个模式来匹配?
这个重写指令有什么作用?
它是否将字符串index.php替换为^(行首),如果是,剩余的URL会被保留,还是整个URL会被重置为index.php

+0

谢谢,正则表达式匹配'^'字符并替换它?它只是我从来没有真的想到一个行的开始是一个字符被匹配和更换 –

回答

1

在重写指令

RewriteRule^index.php [L] 

^手段[​​START](其对应的是$这意味着[END])

本质上,该指令是模式匹配任何URI与[START开始]。

很明显,就是这些。

+0

谢谢。我不知道的是,通常当你想匹配每个URL时,更常见的是看到'RewriteRule。* index.php'。是否使用'^'是因为它不能代替字符串的主体?在这种情况下,使用'^'保留字符串的其余部分(否则它将与'。*'匹配),所以完整的URI变成'index.php <原始url>'? –

+0

不,对于这个结果,指令需要是:'RewriteRule ^(。*)index.php $ 1 [L]'。尽量不要将'mod_rewrite'正则表达式看作搜索和替换工具。它很接近但略微不同:它匹配一个模式,然后写入一个新的url(可能包含也可能不包含你刚刚匹配的模式的片段)。 – Rounin

+0

好吧我现在看到了,谢谢:) –