htaccess正在改变uricaping我的uri

时间:2016-01-03 10:45:50

标签: apache .htaccess mod-rewrite

首先,我不确定它是否被称为逃逸。

基本上我正在我的网站上创建一个搜索页面。它没有htaccess就可以正常工作但是一旦我添加了htaccess重写规则,特殊字符就会从转义变为普通字符。

实施例

没有htaccess

http://localhost:8888/search.php?s=hey%21%40%23%24

变量返回hey!@#$

使用htaccess

RewriteRule ^search/(.*)$ search.php?s=$1 [NC,L] 

http://localhost:8888/search/hey%21%40%23%24

的变量返回hey!@,它告诉我#正在评论该行的其余部分。

如何设置它以便在我的htaccess文件中保留特殊字符(!@#$)?

我了解在应用任何规则之前读取/转换URI,那么如何重新转换它呢?或者这不可能吗?

基本上我只想让我的重写规则使用这个uri http://localhost:8888/search/hey%21%40%23%24而s要返回hey!@#$

1 个答案:

答案 0 :(得分:1)

使用B flag在应用转换之前转义非字母数字字符:

Options -MultiViews
RewriteEngine On

RewriteRule ^search/(.*)$ search.php?s=$1 [NC,L,B,QSA]