2017-03-22 15 views
0

我正在研究一個簡單的路由系統,並且我需要製作一個RewriteRule,其中一切(沒有例外都作爲查詢參數傳遞到我的主php文件中)。 ^(。*)$似乎不起作用,唯一使用它們返回的是'/index.php'如何在htaccess中重寫任何一種字符串?

似乎工作的唯一的事情是^([a-zA-Z0- 9/_-] *)$等,但事情是:我想這個表達式匹配所有Unicode字符,並且我假設一個手動完成這個操作的表達式將會非常慢並且不夠優雅。爲什麼這些據稱顯而易見的表達不適當LY?

在此先感謝。

RewriteEngine on 
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA] 
+0

@anubhava甚至根/ URL不起作用。 – JoeTheMan

+1

讓我澄清一下:除'index.php'外,沒有任何內容被傳遞給'path'查詢字符串參數。這適用於我嘗試輸入的任何URL。 – JoeTheMan

回答

0

您可以使用此規則:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php?path=%{REQUEST_URI} [L,QSA] 
+0

是的,非常感謝!爲什麼這個工作? – JoeTheMan

+0

這是因爲上面有2條'RewriteCond'行,所以停止規則執行兩次,這是爲您的規則發生的。第二次'REQUEST_URI'變成'index.php',因此你的'path'參數變成'index.php' – anubhava

+0

同樣,如果結果出來了,[你可以在頂部點擊**勾號**此答案的左側](http://meta.stackexchange.com/a/5235/160242) – anubhava