我打赌这个问题一次又一次被问到,但我似乎无法得到答案。无论如何,这是我的情况。我有一个域名,比如example.com。 Example.com工作正常,一切正常。但是,如果我导航到可在我的本地计算机上运行的Example.com/about,则会出现404错误。但是,如果我转到example.com/index.php/about,那么about页面工作正常。我知道这必须是一个mod重写问题。我已启用mod重写并重新启动我的服务器无济于事。无论如何,这里有一些代码:
虚拟主机:
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/var/www/example/public"
<Directory "/var/www/example/public">
AllowOverride all
Allow from All
</Directory>
</VirtualHost>
这是我的.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我在数字海洋Droplet上使用Ubuntu 14.04。
谢谢!
答案 0 :(得分:0)
<强> 1) 转到/ etc / apache2 / sites-available并创建文件并在下面添加
<VirtualHost *:80>
ServerName example.com
ServerAdmin webmaster@newyear
DocumentRoot /var/www/html/example/public
<Directory /var/www/html/example/public>
options Indexes FollowSymlinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
2)创建上面创建的文件的链接并将其粘贴到/ etc / apache2 / sites-enabled
3)检查/ etc / apache2 / mods-可用于rewrite.load
文件
如果它不是那里创建它并添加到下面的线和&amp;保存
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
创建rewrite.load文件的链接并将其粘贴到etc/apache2/mods-enabled
4)打开/ etc / hosts 在下面添加
127.0.0.1 example.com
5) sudo service apache2 restart
答案 1 :(得分:0)
我想出了如何做到这一点,我不得不将我的VirtualHost代码放在已启用网站的位置,而不是网站可用。捂脸。
答案 2 :(得分:0)
在使用apache2的ubuntu 14.04中,我遇到了这个问题。然后我解决了这个并撰写了博客,你可以按照这个 http://www.kingpabel.com/apache-mod_rewrite/