htaccess clean url语法将管道符号转换为%7C

时间:2014-02-13 09:30:09

标签: mod-rewrite special-characters clean-urls

我花了最后10个小时来弄清楚我做错了什么但不幸的是到目前为止没有效果......

所以这就是我的情况:

RewriteRule ^party/(.*)$ party.php?party=$1  [L]

是我在htaccess中清理网址的工作规则 它工作得很好,但现在我在$ _GET参数中有一些特殊的字符,例如*未转换,但管道符号会转换为%7C

我检查了party.php?party=$1并正确显示了所有字符,所以我猜我的htaccess语法导致失败....

我也试过[NE]标志,但它不起作用......

任何想法? 非常感谢你!

我也刚刚意识到网址在mozilla中正确显示...

1 个答案:

答案 0 :(得分:0)

我用:

Options +FollowSymlinks
RewriteEngine On

RewriteBase /
RewriteCond %{HTTP_HOST} ^(.+)?\.testynarkotykowe.xernt.com$ [NC]
RewriteRule ^(.*)$ http://testynarkotykowe.pl/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php

加你做。

    function sUrl() {
        $_GET = explode('/',substr(getenv('REQUEST_URI'),1)); $_pth = PTH;
        if(!empty($_pth)) {
            $pth  = explode('/',PTH);
            for($i = 0; $i < count($_GET); $i++) if($_GET[$i] == $pth[$i]) unset($_GET[$i]);
            array_splice($_GET,0,0);
        } foreach($_GET as $k=>$v) $_GET[$k] = htmlspecialchars($v); /* SECURITY: check for addslashes */
    }
}