URL重写和Laravel 4路由无法在服务器上运行?

时间:2015-04-29 00:12:06

标签: php apache .htaccess mod-rewrite laravel

我打赌这个问题一次又一次被问到,但我似乎无法得到答案。无论如何,这是我的情况。我有一个域名,比如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。

谢谢!

3 个答案:

答案 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/