2014-11-06 43 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] 

我不知道这是否可能是错误...