php,#url编码和mod重写避免解码

时间:2016-10-17 09:44:14

标签: symfony

我有一个带有mod重写的页面,用于搜索部件号,这些部件号在他们的名字中可能有一个#,所以我必须将它们url编码到url中的%23。问题是,当使用mod重写时,它会将%23转换为#,然后我只能检索部件号名称的左侧部分。

示例网址: / ES /搜索/ ABC%23DEF /

的.htaccess

RewriteRule     ^(.*)/search/(.*)/$ index.php?lang=$1&section=search&search=$2 [L,QSA]

如果我在index.php中打印_SEVER和_GET值,我得到: _SERVER

[QUERY_STRING] => lang=es&section=search&search=ABC
[REQUEST_URI] => /es/search/ABC%23DEF/

_GET

Array
(
    [lang] => es
    [section] => search
    [search] => ABC
)

我需要在搜索变量中使用url中的“ABC#DEF”,但这会以#符号结束,我猜是因为它在url中用锚点识别它,因为mod重写已将它从%23转换为#

1 个答案:

答案 0 :(得分:1)

写下问题我找到了解决方案。

解决方案是在.htaccess(https://httpd.apache.org/docs/current/rewrite/flags.html#flag_b)中添加“B”标志

所以htacces如下

RewriteRule     ^(.*)/search/(.*)/$ index.php?lang=$1&section=search&search=$2 [L,QSA,B]