【问题标题】:Apache RewriteCond to prevent infinite loopApache RewriteCond 防止无限循环
【发布时间】:2015-05-11 14:33:01
【问题描述】:

我在我的网站上使用 Google Analytics,它在页面上运行良好,问题是我想在直接访问它们时点击计数器的 mp3 文件。

我有一个php文件如下:

<?php 

error_log("hiiiiiiiii--".$_SERVER['REQUEST_URI']); // for testing
error_log("meeeeeeeee--".$_SERVER["HTTP_REFERER"]); // for testing
//header("location:".$_SERVER['REQUEST_URI']);

?>

<html>
    <body>
        <script>
            //GA code goes here
            window.location = ("<?php echo $_SERVER['REQUEST_URI']; ?>");
        </script>
    </body>
</html>

在我的音频文件根文件夹中的 .htaccess 中:

#RewriteCond %{SCRIPT_NAME} !(counter) #Here is the problem
RewriteRule ^(.*)\.mp3$ /media/counter\.php [L]

请求重定向到 counter.php 并重定向到 .mp3 文件,但是这很明显会造成无限循环。 我需要的是 RewriteCond,这样如果 http_refferer 或 script_name 包含名称“counter”,则不会重定向到 counter.php。

感谢您的帮助

【问题讨论】:

    标签: php apache .htaccess mod-rewrite google-analytics


    【解决方案1】:

    我需要的是 RewriteCond,这样如果 http_refferer 或 script_name 包含名称“counter”,则不会重定向到 counter.php。

    试试这个规则:

    RewriteCond %{HTTP_REFERER} !counter [NC]
    RewriteCond %{REQUEST_URI} !counter [NC]
    RewriteRule ^.+?\.mp3$ media/counter\.php [L,NC]
    

    【讨论】:

    • 谢谢兄弟 :) 还有一件事,我添加了RewriteCond %{HTTP_REFERER} !mp3 [NC],因为当我仍然遇到无限循环时,当我检查日志时,引用者是 mp3 文件!这很奇怪,但我通过添加该行解决了它。
    猜你喜欢
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    相关资源
    最近更新 更多