2014-11-06 101 views
0

現在我在htaccess中有這樣的規則。正如你可以看到它從/ sjdfsd重定向到/hello.php?query=sjdfsd sjdfsd - 是一個可以包含0-9,a-z,&,=和其他符號的字符串。.htaccess字符串規則

RewriteEngine on 
RewriteCond %{REQUEST_URI} \/([0-9a-z\&\=\.\[\]\{\}\%\-]+)$ [NC] 
RewriteRule ^(.*) /hello.php?query=%1 [L] 

我需要添加更多的symblol「_」,但是當我更新這樣

RewriteCond %{REQUEST_URI} \/([0-9a-z\&\=\.\[\]\{\}\%\-\_]+)$ [NC] 

第二行我在頁面

內部服務器錯誤

上的錯誤

服務器遇到內部錯誤或配置錯誤,無法完成您的請求。

我該如何做我需要的?

回答

0

解決:

RewriteCond %{REQUEST_URI} \/([a-z0-9_[\]{}%&=-]+)$ [NC] 
0

您可以直接簡化規則,以這樣的:

RewriteEngine on 

# If the request is not for a valid file/directory 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)$ /hello.php?query=$1 [L,QSA] 
+0

這種類型的測試並沒有使用不必要的時間服務器? – Croises 2014-11-06 17:57:49

+2

基於'%{REQUEST_FILENAME}'的檢查幾乎用於所有WP,Joomla,其他CMS網站,其中一些網站非常繁忙。沒有看到由此導致的任何嚴重的性能問題。多數情況下,大部分時間都是網站代碼和數據庫查詢。 – anubhava 2014-11-06 18:03:53

0

我覺得你不必使用\在這種情況下。

RewriteCond %{REQUEST_URI} \/([0-9a-z\&\=\.\[\]\{\}\%\-_]+)$ [NC] 

我不知道這是否可能是錯誤...