3

在这里,我遇到了一个小问题。我有一个在 Yii 框架中构建的网站。它使用 http 协议运行没有任何问题(url 中的 index.php 是隐藏的,所有 url 都可以正常工作)。我已经在亚马逊 ec2 服务中托管了这个。我的 .htaccess 文件中有以下几行

Options +FollowSymLinks

IndexIgnore */*
RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

但是当我使用 https 浏览网站时(注意:我已经全部配置好了),主页正常加载。但其他 url 不起作用,需要添加 /index.php/。我在这里想念什么?

为答案而死。

提前致谢。

4

2 回答 2

3

要使 mod_rewrite 正常工作,不仅必须安装 mod_rewrite,而且如果规则“AllowOverride None”存在于您的项目的目录配置。如果是这样,请将其更改为“AllowOverride All”。

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
**AllowOverride All**

可以通过从此行中删除注释来安装 mod_rewrite

#LoadModule rewrite_module modules/mod_rewrite.so
于 2013-06-17T11:14:05.900 回答
1

经过长时间搜索 .htaccess 配置、主文件配置,在 default-ssl 文件中的 /etc/apache2/sites-enabled 目录中找到了解决方案。(感谢 Hemc 的回答)

这就是我所做的。这可能对其他人有所帮助:

首先移动到 apache 的启用站点的目录

cd /etc/apache2/sites-enabled

然后打开 default-ssl 文件

sudo vi default-ssl 

然后将AllowOverride None更改为AllowOverride All

实际上这是在我的文件的顶部,它工作正常。即。我的 index.php 被正确隐藏并且 url 工作正常 :)

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

    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            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>

最后保存并退出后,别忘了重启你的apache

 sudo service apache2 restart

谢谢

于 2013-06-18T04:23:58.697 回答