【问题标题】:Redirect index.php to root does not work with SSL将 index.php 重定向到 root 不适用于 SSL
【发布时间】:2012-11-22 19:13:47
【问题描述】:

我正在开发一个在 AWS 上运行的 codeigniter/php Web 应用程序。它是一个 LAMP 堆栈(ubuntu)。 为了摆脱 url 中的 index.php,我激活了 mod_rewrite 并使用 .htaccess 文件来解决它。

我的 .htacces 文件如下(这是整个文件):

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .* index.php/$0 [PT,L]

一切正常,网址没有显示 index.php,不在主页 (http://www.example.com) 中,也没有在更深的页面中,例如 http://www.example.com/home/index

添加/配置 SSL 后,重定向停止工作。 主页将像 SSL (https://www.example.com) 之前一样工作,但是更深的 URL 都不起作用。它正在尝试打开“正确”的 url (https://www.example.com/home/index),但是服务器声称 /home/index 找不到。 看起来重写规则不能正常工作,因为如果我输入 https://www.example.com/index.php/home/index 它工作正常。

我已经用谷歌搜索并尝试了很多重写规则,但是它们都没有起到神奇的作用......

附加信息: 我正在使用 Apache 2 站点可用和站点启用,以便将用户路由到正确的基本 url(因为我在我的实例上运行多个应用程序)。

文件顺序为: A.第一个文件的第一部分是:

<VirtualHost *:80>
      ServerAdmin webmaster@localhost

      Redirect permanent / https://www.example.com/
        ...

</VirtualHost>

B.第二个文件的第一部分是:

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerAdmin webmaster@localhost

  ServerName www.example.com

  DocumentRoot /var/www/example
        ...

</VirtualHost>
</IfModule>

有什么想法吗?我不确定这是配置问题还是我的应用程序中的问题。 任何指针将不胜感激。

【问题讨论】:

    标签: php apache codeigniter mod-rewrite ssl


    【解决方案1】:

    在您的 .htaccess 文件中尝试此代码。我也在 AWS 上开发 web 应用程序,像你一样启用 ssl 并且进展顺利。

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
    

    【讨论】:

    • 谢谢文卡特。不幸的是,它仍然对我不起作用......我不断收到 404 -“未找到。在此服务器上找不到请求的 URL /home/about。”这是您的 .htaccess 文件的全部内容吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 2021-09-21
    • 2013-05-18
    • 2018-05-27
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多