这里我遇到了一个小问题。我有一个用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/。我在这里失踪了什么?
寻求答案。
提前感谢。
答案 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
感谢