简单的正则表达式在htaccess中不起作用

时间:2012-05-02 15:21:34

标签: regex .htaccess url-rewriting

看起来像一个简单的问题。但我根本不明白:

这条htaccess规则确实有效:

RewriteEngine On
RewriteRule ^m(.+)$ ?s=$1

但这不是:

RewriteEngine On
RewriteRule ^(.+)$ ?s=$1

它返回内部服务器错误。这个正则表达式有什么问题?为了工作应该改变什么?

2 个答案:

答案 0 :(得分:0)

我不知道“不起作用”究竟意味着什么,但我认为它可能会陷入重写循环。

试试这个:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^?s=
RewriteRule ^(.+)$ ?s=$1

我没有对此进行过测试,但如果没有添加?参数,它应该只重写。

答案 1 :(得分:0)

哦,我刚才意识到你也可以在RewriteConds中查找实际的查询字符串。你可以尝试:

RewriteEngine On
RewriteCond %{QUERY_STRING} !s=
RewriteRule ^(.+)$ ?s=$1