首先,我不确定它是否被称为逃逸。
基本上我正在我的网站上创建一个搜索页面。它没有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!@#$
答案 0 :(得分:1)
使用B
flag在应用转换之前转义非字母数字字符:
Options -MultiViews
RewriteEngine On
RewriteRule ^search/(.*)$ search.php?s=$1 [NC,L,B,QSA]