使用 SSL 的某些页面上出现 404 错误

Posted

技术标签:

【中文标题】使用 SSL 的某些页面上出现 404 错误【英文标题】:404 Error on Certain Pages Using SSL 【发布时间】:2013-08-04 04:22:13 【问题描述】:

我正在尝试在我的 wordpress 网站上启用 ssl,但遇到了一些困难。我已经通过 wordpress ssl 插件启用了 ssl admin(经过很好的审查),并且还需要 ssl 用于其他几个页面。管理面板与 https 配合得很好,主页和其他几个页面也是如此。然而,在其中许多页面上,即我使用我编写的 php 插件动态生成的页面,我收到 404 错误:

找不到

在此服务器上找不到请求的 URL /create/5。

Apache/2.2.22 (Ubuntu) 服务器位于 upsmart.com 端口 443

目前尚未奏效的方法包括:

我已经在服务器上启用了 mod-rewrite,我已经尝试将仪表板中的站点 URL 更改为明确为 https:// 并且我已经扫描了 php 以查找 http:// 的硬编码实例

真的在这个问题上摸不着头脑,所以任何想法都会受到赞赏。

作为参考,我在 Ubuntu 12.04 上使用 Apache。

更新! 我检查了我的 Apache 错误日志并得到以下消息:

文件不存在:/home/user/www/create

我看到后的反应是“当然不是。如果我想让它发送到 http://example.com/create/,为什么它会读为 ~/www/create?

【问题讨论】:

【参考方案1】:

请允许我脸红一点;我对上述问题的更新让我可以猜测这个问题,但我会把它记下来以防其他人遇到问题。

我发现我只配置了一半的文件 /etc/apache2/sites-enabled/default-ssl。

文件开头如下:

ServerAdmin webmaster@localhost

    DocumentRoot /home/sam/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /home/sam/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride none
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

问题是第二个 AllowOverride 需要从 none 更改为 all。让它看起来像这样。

ServerAdmin webmaster@localhost

    DocumentRoot /home/sam/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /home/sam/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride none
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

请注意:这必须为 ssl 配置,即使您已为其他启用的站点(如 000-default)配置此设置。

【讨论】:

【参考方案2】:

配置之间没有区别。

【讨论】:

以上是关于使用 SSL 的某些页面上出现 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

IIS 托管的 Web 应用程序可以在没有 www 的情况下使用 ssl 正常工作,使用 www 会出现 404 错误

端口 443 上的 SSL 错误,页面未显示并导致错误 404

Codeigniter - 设置 SSL 并收到 404 错误

服务器常见页面访问返回错误信息(404 500 400)表示啥意思

服务器常见页面访问返回错误信息(404 500 400)表示啥意思

nginx 反向代理 google,出现 404,怎么破