htaccess RewriteEngine 适用于 HTTP,但不适用于 HTTPS



我正在尝试将诸如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完成)都会很棒。谢谢。

编辑:在阅读了一些评论之后,这里有一些更新。

  • 我确实有该网站的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.我不知道为什么会这样,如果我直接访问该文件,我可以很好地使用它。

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

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

RewriteBase /

我仍然不确定为什么没有这一行,它使用 HTTP 而不是 HTTPS 工作,但添加这一行后一切都运行良好。

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

最新更新