将index.php重定向到root不能与SSL一起使用

时间:2012-12-05 01:54:48

标签: php apache codeigniter mod-rewrite ssl

我正在开发一个在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工作。它试图打开“正确”的网址(https://www.example.com/home/index),但服务器声称/ home / index无法找到。 看起来重写规则无法正常工作,因为如果我键入https://www.example.com/index.php/home/index它就可以正常工作。

我用Google搜索并尝试了不少重写规则,但是他们都没有做过魔术......

另外一条信息: 我正在使用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>

有什么想法吗?我不确定它是否是配置问题或我的应用程序中的某些内容。 任何指针都将非常感激。

1 个答案:

答案 0 :(得分:0)

.htacces文件中试用此代码。我也在AWS上开发Web应用程序,并启用了像你这样的ssl并顺利进行。

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