Mod_Rewrite规则不适用于生产服务器

时间:2009-06-06 10:29:32

标签: mod-rewrite

我一直在努力尝试在我的生产服务器上运行一条规则,该规则可以在我本地计算机上的WAMP服务器上正常工作:


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

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

一旦我有了这个工作,我将添加一个附加条件,引用必须是/ download / ok /下载文件。

3 个答案:

答案 0 :(得分:1)

尝试在最上面添加此行:

Options +FollowSymlinks

所以...

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

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

答案 1 :(得分:0)

尝试找出%{REQUEST_FILENAME}的值:

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

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

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

答案 2 :(得分:0)

下载必须来自缓存!

我觉得现在真的很蠢,我花了不少时间在这上面,而且这一次都是缓存问题,我清除了firefox缓存并且工作正常..

我决定:


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