【发布时间】: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