【问题标题】:htaccess RewriteEngine working for HTTP but not HTTPShtaccess RewriteEngine 适用于 HTTP 但不适用于 HTTPS
【发布时间】:2013-11-30 11:39:08
【问题描述】:

我正在尝试将 www.mysite.com/foo/bar 等 URL 重定向到 www.mysite.com/foo/index.php?foo=bar

为此,我在.htaccess 文件中使用了几行代码,如下所示:

RewriteEngine On
RewriteRule    ^foo/([a-z]+)/?$    foo/index.php?bar=$1 [NC,L]

这对于通过 HTTP 建立的连接非常有用,但我真的需要它也可以通过 HTTPS 工作。当我转到https://www.mysite.com/foo/bar 时,我只会看到404 Not Found 错误页面。

任何帮助通过 HTTPS 工作(或解释为什么不能通过 HTTPS 完成)都会很棒。谢谢。

编辑: 看了几篇cmet,这里有点更新了。

  • 我确实有该站点的 SSL 证书,并且 HTTPS 在该站点的其他地方运行良好
  • 站点的 HTTPS 和 HTTP 版本的文档根目录相同。我使用echo $_SERVER['DOCUMENT_ROOT']; 进行了检查 - 两者都返回相同的内容。
  • 我确实注意到(当我删除我的自定义 404 页面时)显示的错误是:The requested URL document_root/public_html/foo/index.php was not found on this server. 我不知道为什么会出现这种情况,如果我直接访问该文件,我可以使用它很好。

希望这些额外的信息可能会有所帮助。

【问题讨论】:

  • 您的网站之前是否在没有重写引擎的情况下使用 https 工作过?
  • 是的,我有一个 SSL 证书,其他一切都适用于 HTTPS。如果我继续https://www.mysite.com/foo/index.php?foo=bar,一切都会正常运行,只是不会重写。
  • 您确定 HTTPS 站点的 DOCUMENT_ROOT 与 HTTP 站点相同吗?
  • 是的,使用echo $_SERVER['DOCUMENT_ROOT']; 在使用 HTTP 和 HTTPS 加载页面时,我得到了同样的结果。

标签: .htaccess http mod-rewrite https


【解决方案1】:

在搜索了更多解决方案并查看了.htaccess 文件的示例后,我找到了解决方案。我需要将以下行添加到我的 .htaccess 文件中:

RewriteBase /

我仍然不确定为什么没有这条线,它使用 HTTP 而不是 HTTPS,但添加这条线后一切正常。

我不是这方面的专家,但我找到了一个很好的解释 RewriteBase 在这里做了什么(第 4 行):http://randomtype.ca/blog/the-wordpress-htaccess-file-explained/

【讨论】:

    猜你喜欢
    • 2014-08-15
    • 1970-01-01
    • 2019-02-28
    • 2015-01-05
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    相关资源
    最近更新 更多