【问题标题】:Mod_Rewrite rule not working on production serverMod_Rewrite 规则在生产服务器上不起作用
【发布时间】:2009-06-06 23:32:23
【问题描述】:

我一直在尝试让一个规则在我的生产服务器上运行,该规则在我的本地计算机上的 WAMP 服务器上运行良好:


    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule \.exe /download/ [L]

在我的本地服务器上,它会将所有直接文件下载请求重定向到 /download/,但在生产服务器上,文件只是下载,如果您删除条件并键入不存在的文件名,它会重定向到 /download/。 .

一旦我完成了这项工作,我将添加一个附加条件,即引用者必须是 /download/ok/ 之类的东西才能下载文件。

【问题讨论】:

    标签: mod-rewrite


    【解决方案1】:

    尝试在顶部添加这一行:

    Options +FollowSymlinks
    

    所以...

    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule \.exe /download/ [L]
    

    这是一个很好的指南:http://corz.org/serv/tricks/htaccess2.php

    【讨论】:

    • 嗨,Sam,谢谢你的建议,我试过了,没有什么不同 :( 不过,该指南很酷!它回答了我试图找到答案的另一个问题 :)
    【解决方案2】:

    尝试找出%{REQUEST_FILENAME} 的值:

    RewriteCond %{QUERY_STRING} ^$
    RewriteRule \.exe %{REQUEST_URI}?%{REQUEST_FILENAME} [R]
    

    也许您需要自己编写正确的文件系统路径:

    RewriteCond %{DOCUMENT_ROOT}$0 -f
    RewriteRule .*\.exe.* /download/ [L]
    

    【讨论】:

    • 嗨,Gumbo,试过了,但仍然不起作用,我认为规则没有错,我认为由于某种原因,如果文件存在,则不使用 mod_rewrite。是状态:
       <directory> Options -FollowSymlinks +SymlinksIfOwnerMatch </directory>
    • 您是否检查过 REQUEST_FILE 的值以及该值是否正确?
    【解决方案3】:

    下载必须来自缓存!

    我现在觉得自己很蠢,我在这上面花了无数个小时,而这一直是一个缓存问题,我清除了 firefox 缓存,它工作正常..

    我决定了:

    RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{HTTP_COOKIE} !^.*download_key=abc123.*$ RewriteRule \.exe /download/ [R]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多