重写包含'?'的网址

时间:2015-01-16 22:14:29

标签: apache .htaccess mod-rewrite

我有一个转换规则:

 www.test.com/123456789

www.test.com/task.php?name=123456789

现在我希望以前用问号做同样的事情:

www.test.com/?123456789

我试过了:

RewriteRule ^\?([0-9]{10})$ task.php?name=$1 [L,NC,QSA]

但它不起作用:没有错误,但没有重定向到task.php

我认为'?'可能会导致问题..

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

尝试使用

RewriteRule ^\?([0-9]{10})$ task.php?name=$1 [L,NC,QSA]

捕获您的号码并将其传递到新网址

答案 1 :(得分:0)

您可以在.htaccess中使用www.test.com/?123456789

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^(\d+)$
RewriteRule ^$ task.php?name=%1 [L]

顺便说一句...... 123456789 - > [0-9]{9}而不是{10} 如果10很重要,你可以使用:

RewriteCond %{QUERY_STRING} ^(\d{10})$