1

我有这个在我的.htaccess

RewriteCond %{QUERY_STRING} ^(.*)?$
RewriteRule ^([0-9A-Za-z\-_]+)(/)?  index.php?action=view&type=page&page=$1&%1 [L]

但是当我把它放在浏览器中时:

http://localhost:8888/myapp/test%20doc

网址转换为:

index.php?action=view&type=page&page=test

为什么我不应该得到:

index.php?action=view&type=page&page=test%20doc ?
4

1 回答 1

2

为了便于阅读,请删除RewriteCondQSA(查询字符串附加)标志并将其添加到您的RewriteRule

RewriteRule     ^([\w-]+)/?    index.php?action=view&type=page&page=$1 [QSA,L]

您使用 ( http://localhost:8888/myapp/test%20doc) 测试的 url 没有查询字符串。你的意思是测试:

http://localhost:8888/myapp/test?doc

编辑

您的问题与查询字符串无关。只有你没有匹配你的字符类中的空格字符并且你打算匹配的事实。只需在您的角色类中添加一个空格。这也应该为您工作:

^([ \w-]+)/?

\w只是一个简写0-9A-Za-z_

于 2013-07-23T18:13:59.480 回答