使用“https”时,将“index.php”隐藏在“YII”中的url不起作用

时间:2013-06-17 05:07:55

标签: .htaccess https yii

这里我遇到了一个小问题。我有一个用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浏览网站时(注意:我已经完成了所有配置),主页正常加载。但其他网址不起作用,需要添加/index.php/。我在这里失踪了什么?

寻求答案。

提前感谢。

2 个答案:

答案 0 :(得分:3)

要使mod_rewrite正常工作,不仅必须安装mod_rewrite,而且如果规则“AllowOverride None”,还要检查Apache目录配置(通过apt-get安装的Ubuntu上的/ etc / apache2 / sites-enabled / 000-default)存在于项目的目录配置中。如果是这样,请将其更改为“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

答案 1 :(得分:0)

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

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

首先转到apache的启用站点的目录

cd /etc/apache2/sites-enabled

然后打开default-ssl文件

sudo vi default-ssl 

然后将 AllowOverride无更改为 AllowOverride All

实际上这是我文件的顶部,它工作正常.ie。我的index.php被正确隐藏,网址工作正常:)

    <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

感谢