【问题标题】:Using mod_rewrite to return 404 for all requests on http [closed]使用 mod_rewrite 为 http 上的所有请求返回 404 [关闭]
【发布时间】:2013-03-11 10:45:38
【问题描述】:

我正在配置 apache 以创建一个站点,该站点将使用 mod_jk 连接到在 tomcat 上运行的应用程序。

我只希望 https 请求访问我的应用程序,我想使用 mod_rewrite 为端口 80 上的任何 http 请求返回 404。

这是我对 VirtualHost 配置的尝试

<VirtualHost *:80>
  ServerName admin.app.com
  RewriteEngine On
  RewriteRule ^ [L,R=404]
</VirtualHost>

<VirtualHost *:443>
  ServerName admin.app.com
  SSLEngine On
  SSLCertificateFile /etc/apache2/ssl/bla.crt
  SSLCertificateKeyFile /etc/apache2/ssl/bla.key
  SSLCACertificateFile /etc/apache2/ssl/bla.ca
  SSLProtocol all
  SSLCipherSuite HIGHT:MEDIUM

  JkMount /myapp* 

</VirtualHost>

现在点击https://admin.app.com/myapp 时一切都很好 - 我可以访问我的 tomcat 应用程序,确认 mod_jk 和我的 SSL 证书按预期工作,但是我使用 http:// 发出的任何 url 请求都会返回 400 bad请求,而不是我期望的 404。

我添加了 RewriteLog 和 RewriteLogLevel 3 并得到以下输出

(2) init rewrite engine with requested uri /
(3) applying pattern '^' to uri '/'
(2) rewrite '/' -> '[L,R=404]'
(2) local path result: [L,R=404]
(2) init rewrite engine with requested uri /myapp/favicon.ico/
(3) applying pattern '^' to uri '/myapp/favicon.ico/'
(2) rewrite '/myapp/favicon.ico/' -> '[L,R=404]'
(2) local path result: [L,R=404]

我解释为应该返回 404

我的问题是,当日志似乎将我的请求正确地重写为 404 时,为什么我会收到 400 Bad Request,此外,关于只允许通过 https 访问网站的最佳做法是什么。

【问题讨论】:

    标签: apache mod-rewrite rewrite http-status-code-404


    【解决方案1】:

    您不应该使用代码 404,因为问题不在于找不到页面,而在于用户正在发出被禁止的请求。

    试试这个:

    RewriteRule ^ - [F]
    

    然后你可以使用自定义的 403 错误页面来说明只允许安全请求到此路径。

    【讨论】:

    • 感谢您的回答,您实际上用错误的请求回答了我的问题,我错过了克拉后面的连字符...放入它似乎使它起作用。但我还想说关于禁止而不是 404,我更喜欢 404,因为它是一种默默无闻的安全形式,与 403 不同,它隐藏了根本存在任何目录的事实。跨度>
    • 我确实想知道丢失的连字符是否可能是您的问题,但我想看看是否可以说服您改用 403 错误代码。默默无闻的安全性很少能持续很长时间,不要忘记 404 代码可能会让搜索引擎认为您的网站包含指向死页的链接,这可能会损害搜索排名,并且还会产生其他副作用。祝你好运,但你决定处理它。
    • @tlcowling 在这一点上必须同意你的观点,尽管 Bobulous 的正确之处在于默默无闻的安全性几乎不会持续存在,也没有必要告诉潜在的攻击者他们正在寻找的东西存在。只要您确定没有指向它的链接,就不要伤害 SEO 工作。
    猜你喜欢
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 2022-11-04
    • 2017-04-19
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多