【问题标题】:Htaccess Revert URL EncodingHtaccess 恢复 URL 编码
【发布时间】:2011-07-03 00:30:51
【问题描述】:

Facebook 和 twitter 重写 url 并用代码替换字符(如 ? 或 /)。

原始网址 - http://example.com/article.php?title=hi/how-are-you?

网址后(社交网络重定向):http://example.com/article.php?title=hi%2Fhow-are-you%3F

我使用托管评论系统 (Disqus),它使用 URL 作为线程标识符,这意味着由于这种变化,我将在一个页面上获得两个线程。

无论如何我可以通过 htaccess 或其他方法恢复字符吗?

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    你可以使用rawurldecode

    【讨论】:

    • 我不确定我是否理解您的回答。我知道这会将 url 解码为字符串,但我需要更像是重定向的东西,它可以动态解码 url - 还是你在暗示一些对我来说晦涩难懂的东西?
    【解决方案2】:

    你可以用 php-function 取回正确的行:

    $_GET['title'] = urldecode($_GET['title']);
    

    因此,您可以通过 .htaccess 使用此函数通过 rewriter.php 传递所有 url。 .htaccess:

        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-d [NC]
        RewriteCond %{REQUEST_FILENAME} !-f [NC]
        RewriteRule ^(.*)$ /rewriter.php [QSA]
    

    重写器.php:

    <?php 
        $_GET['title'] = urldecode($_GET['title']);
        include('index.php');
    ?>
    

    此方法允许使用一些统计信息、重定向或其他操作。

    【讨论】:

    • 我强烈建议不要这样做。关于 register_globals:“从 PHP 5.3.0 开始,此功能已被弃用。强烈建议不要依赖此功能。” php.net/manual/en/security.globals.php
    • 当然你是对的,我很抱歉。 “php_flag register_globals on”可以毫无问题地从此代码中删除
    猜你喜欢
    • 1970-01-01
    • 2014-10-12
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2021-12-26
    • 2012-11-20
    • 2011-01-22
    相关资源
    最近更新 更多