我有一个带有mod重写的页面,用于搜索部件号,这些部件号在他们的名字中可能有一个#,所以我必须将它们url编码到url中的%23。问题是,当使用mod重写时,它会将%23转换为#,然后我只能检索部件号名称的左侧部分。
示例网址: / ES /搜索/ ABC%23DEF /
的.htaccess
RewriteRule ^(.*)/search/(.*)/$ index.php?lang=$1§ion=search&search=$2 [L,QSA]
如果我在index.php中打印_SEVER和_GET值,我得到: _SERVER
[QUERY_STRING] => lang=es§ion=search&search=ABC
[REQUEST_URI] => /es/search/ABC%23DEF/
_GET
Array
(
[lang] => es
[section] => search
[search] => ABC
)
我需要在搜索变量中使用url中的“ABC#DEF”,但这会以#符号结束,我猜是因为它在url中用锚点识别它,因为mod重写已将它从%23转换为#
答案 0 :(得分:1)
写下问题我找到了解决方案。
解决方案是在.htaccess(https://httpd.apache.org/docs/current/rewrite/flags.html#flag_b)中添加“B”标志
所以htacces如下
RewriteRule ^(.*)/search/(.*)/$ index.php?lang=$1§ion=search&search=$2 [L,QSA,B]