我有一个我希望重写的网址mysite.com/accounts?id=test
应该定向到mysite.com/accounts.php?id=test
。我检查了我的mod_rewrite
,它可以工作,因为其他页面可以正确编写。我目前正在尝试这个:
RewriteRule ^accounts?([.]+)$ accounts.php?$1 [NC,L]
这似乎不起作用。是因为正则表达式中的问号吗?我尝试用\来逃避它但它仍然不起作用。
任何帮助都将不胜感激。
答案 0 :(得分:2)
首先我认为([.]+)
与(.*)
相同。
其次,RewriteRule已经从URL中删除了query_string
您可以使用%{QUERY_STRING}
访问它。
所以你的代码将是
RewriteRule ^accounts?(.*)$ accounts.php?%{QUERY_STRING} [NC,L]
您可以使用以下内容创建accounts.php进行测试:
<?php
echo "<pre>";
print_r($_SERVER);
exit();
// rest of your code
?>
然后检查您的[QUERY_STRING]
。