我尝试了多种方法从我的网址http://www.example.com/index.php/login)中删除index.php,以及将www重定向到非www网址。
这是我的默认Apache VirtualHost文件:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/public/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/public/>
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>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
现在我已将以下内容添加到此文件中:
Redirect 301 / http://example.com
但是这没有用,我只是得到一个重定向循环消息。我也有以下.htaccess:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我已添加:
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
但这也不起作用。
另一个问题是,对于我的所有路线,我必须包括index.php,例如http://example.com/index.php/test
好像我的.htaccess文件被忽略了。
服务器是运行Ubuntu 13.04 x64的DigitalOcean Droplet。它有PHP 5.4.9和Apache 2.2.22。
非常感谢任何帮助。感谢。
答案 0 :(得分:2)
感谢#laravel IRC聊天中的anlutro,他指出mod_rewrite可能无法启用。通常这在我曾经使用的所有服务器中都是打开的,所以它没有点击,因为我从来没有启用它,但是在这台DigitalOcean服务器上,它不是。
我用过:
a2enmod重写启用它,然后我重新启动了apache。一切都很好。
干杯