我正在尝试将诸如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完成)都会很棒。谢谢。
编辑:在阅读了一些评论之后,这里有一些更新。
- 我确实有该网站的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/