RewriteRule在SSL访问日志中创建404

时间:2019-03-25 20:38:41

标签: .htaccess access-log

我正在尝试获取一些不错的URL。我想用
https://sub.domain.edu/fs/7356
对于
https://sub.domain.edu/fs/index.php?ind=7356

我对该目录的.htaccess是:
RewriteEngine On RewriteBase /fs/ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?ind=$1 [L,QSA]

该页面在浏览器中工作正常。 PHP脚本有效。一切看起来很棒。但是ssl_access_log将每个页面访问显示为404。

“获取/ fs / 7356 HTTP / 1.1” 404 9241

除了logwatch将所有这些404标记为可能是恶意探测器之外,这只会令人讨厌。每天早上,我都会收到一封电子邮件,说数十个IP试图探查该站点。我尝试将R = 301添加到RewriteRule中,但它会完全重定向到我要避免的完整URL。

1 个答案:

答案 0 :(得分:0)

我必须制作一个自定义日志格式。在/etc/httpd/conf.d/ssl.conf中,我注释掉了创建ssl_acess-log文件并将其替换为LogFormat和Customlog指令的条目。

#TransferLog logs/ssl_access_log LogFormat "%h %l %u %t \"%r\" %s %b" logwatchfix CustomLog logs/ssl_access_log logwatchfix

http://httpd.apache.org/docs/current/mod/mod_log_config.html

这导致与原始输出几乎相同,唯一的例外是将“%> s”替换为“%s”。它的工作方式与我理解文档的方式相反。

“%s状态。对于内部已重定向的请求,这是原始请求的状态。将%> s用作最终状态。”

我本来以为“原始请求的状态”应该是“ 404”,。htaccess重定向后的“最终状态”应该是“ 200”。实际上,在我的情况下,它的工作与之相反。我也将类似的.htaccess文件放在其他以相同方式工作的目录中。我在httpd.conf文件中将目录索引设置为index.php而不是index.html,但这似乎没有什么区别。