![.htaccess 重写模块在 Windows 上的 Apache 下不起作用](https://linux22.com/image/687341/.htaccess%20%E9%87%8D%E5%86%99%E6%A8%A1%E5%9D%97%E5%9C%A8%20Windows%20%E4%B8%8A%E7%9A%84%20Apache%20%E4%B8%8B%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我正在尝试将请求重定向到 Apache 服务器根目录中的文件夹,然后再重定向到单个文件index.py
。到目前为止,没有任何效果。这是我的 .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{HTTP_REFERER} !index\.py
RewriteRule . index.py [L]
</IfModule>
这仍然让我输入 URL,如www.example.com/files/testfile.zip
和下载。它需要返回到index.py
。我已取消注释了mod_rewrite.co
中的行httpd.conf
。这是在 Windows 中。
答案1
这仍然让我向其提供类似 URL
www.example.com/files/testfile.zip
并下载。
您发布的指令明确排除了映射到文件系统上现有文件的 URL。因此,是的,您将被允许访问/files/testfile.zip
(物理文件)并下载它。(具体来说,RewriteRule
仅适用于不存在的文件。)
但是,您发布的指令还存在其他问题,这表明它无法正常工作...这个 .htaccess 文件位于哪里?
如果此 .htaccess 文件位于文档根目录中,则它将匹配每一个请求,而不仅仅是对子目录中文件的请求。
如果 .htaccess 文件位于子目录中,则任何成功的重写都将重写到index.py
该子目录中,而不是文档根目录。
到内部重写 全部将特定子目录中的请求复制到index.py
文档根目录中,然后在该子目录中的 .htaccess 文件中尝试执行以下操作:
RewriteEngine On
RewriteRule ^ /index.py [L]
更新:您需要启用 .htaccess 文件,如果它们尚未启用...AllowOverride All
应该进入您的服务器配置(如果不需要,All
可以稍后替换为FileInfo
一切)。Options +FollowSymLinks
必须位于<Directory>
服务器配置的某个部分中,或者位于 .htaccess 文件本身中。