我正在开发一个在 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/指数
一旦我添加/配置了 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>
任何想法?我不确定这是配置问题还是我的应用程序中的问题。任何指针将不胜感激。