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

时间:2013-11-17 08:44:41

标签: .htaccess http mod-rewrite https

我正在尝试将www.mysite.com/foo/bar等网址重定向到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.我不知道为什么会出现这种情况,如果我直接访问该文件,我可以好好用。

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

1 个答案:

答案 0 :(得分:1)

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

RewriteBase /

我仍然不确定为什么,如果没有这一行,它可以使用HTTP而不是HTTPS,但是所有内容都适用于添加此行。

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