Mod 重写 htaccess 在旧服务器上有效,但在新服务器上无效

Mod 重写 htaccess 在旧服务器上有效,但在新服务器上无效

我有以下 .htaccess 文件,它在我的旧主机上运行良好。我移至 AWS 实例 (Ubuntu 12.04 LTS),但它不再完全正常工作:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{HTTPS} !=on
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule> 

我知道 rewrite 已安装,因为它部分工作正常 - 它确实将 HTTP 请求发送到 HTTPS。此外,它确实显示在正在运行的模块列表中。但是,我不能再使用没有 index.php 的 URL,因为它全部显示为 404。由于这是一个已经运行的网站的精确副本,我想我在安装 apache 时一定做错了什么,但我想象不出是什么。

答案1

尽管很多酷孩子不加解释就否决了这个问题,但我还是设法搞清楚了。问题是由于它是 HTTPS,所以在 /etc/apache2/sites-enabled/default 中将 AllowOverride 更改为 All 不起作用。在这种情况下,您需要编辑 default-ssl。

相关内容