2013-08-21 56 views
2

我有一個RewriteRule.htaccess,我想允許URL中的所有字符。RewriteRule .htaccess允許所有字符

我通過PHP

過濾掉任何壞字符的代碼我現在有被

RewriteRule ^([a-zA-Z0-9\-]+)\.php$ file.php?key=$1 [L] 

我試圖將其更改爲

RewriteRule ^(.*)\.php$ file.php?key=$1 [L] 

,讓一切經歷,但它不沒有工作。我不想在.htaccess中僅過濾PHP。即使我在PHP中過濾它們,是否存在安全風險來允許所有的字符?

+0

服務器日誌說什麼?你獲得什麼狀態? 404 - 找不到? –

+0

@OskarHane它工作正常我只是不想.htaccess過濾我的變數我只想做它已經實施的PHP。 –

回答

1

你可能要檢查的文件重定向之前存在,所以你不要落在一個無限循環:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)\.php$ file.php?key=$1 [L] 

第一行覈實,如果該文件存在,如果不存在,它重定向。

因爲你已經有了會重定向,anything.phpfile.php?key=anything否則file.php將自己一遍又一遍重定向到file.php例如第二行。

是的,只要您在使用PHP代碼之前妥善清理信息,就不會有任何問題。

+1

我想我有它的權利,但後來認識到關鍵= $ 1只適用於文件名稱,我將如何添加多個變量,通過.htaccess到PHP? –

+2

@AbbyE你的意思是,如果你有'something.php?var1 = something'之類的東西?如果是這樣,你可以使用QSA(查詢字符串追加)標誌來保存變量,'[QSA,L]' – Prix

+1

你的救星!它像我想要的那樣工作。謝謝! +1 –