【发布时间】:2016-11-21 11:08:13
【问题描述】:
我有以下 .htaccess 文件:
RewriteEngine On
# Rewrite www.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
假设我的域是foo.com。如果我打开http://foo.com/something,它将被重定向到http://www.foo.com/something。这很好用,除非something 包含任何url encoded 字符。
如果我打开http://www.foo.com/bar/file-with-%3F-in-name,REQUEST_URI 就是/bar/file-with-%3F-in-name。
如果我打开http://foo.com/bar/file-with-%3F-in-name,但是,编码%3F的url在重写期间被解码为?,REQUEST_URI变成/bar/file-with-和QUERY_STRING-in-name。
如何防止url编码的字符在重写过程中被解码?
【问题讨论】:
标签: apache .htaccess mod-rewrite url-rewriting