2016-01-15 31 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

好吧我現在看到了,謝謝:) –