mod_rewrite目标中的文字问号

时间:2015-04-05 08:41:11

标签: .htaccess mod-rewrite

我有一堆文件名为file.txt?x=1&y=2,位于apache目录中。我希望http://example.net/sub/file.txt?x=1&y=2请求提供这些文件,而不是尝试使用查询路径http://example.net/sub/file.txt显示x=1&y=2

如果可能,我还希望能够提供file.doc(没有任何问号)以及使用正确编码的文件名(即http://example.net/sub/file.txt%3Fx=1&y=2)提供请求。

如何使用mod_rewrite配置子目录中的.htaccess文件?显而易见的规则

RewriteRule ^.*$ $0?%{QUERY_STRING}

导致直接直通,因为mod_rewrite将?视为查询字符串。

1 个答案:

答案 0 :(得分:0)

将问号编码为%3F 并用反斜杠进行掩码:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^.+$
RewriteRule ^[^?]*$ $0\%3F%{QUERY_STRING}

RewriteCond确保没有查询字符串的网址不会附加问号。 RewriteRule仅在它们没有任何正确编码的问号时匹配。