.htaccess 重写模块在 Windows 上的 Apache 下不起作用

.htaccess 重写模块在 Windows 上的 Apache 下不起作用

我正在尝试将请求重定向到 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

这仍然让我向其提供类似 URLwww.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 文件本身中。

相关内容