laravel在此服务器上找不到请求的URL

时间:2015-01-30 18:36:00

标签: apache ubuntu laravel laravel-4

我是一个Ubuntu 14.04内核。我在这台服务器上安装了我的Laravel应用程序。 安装后,我尝试将根目录设置为public。

sudo nano /etc/apache2/sites-available/000-default.conf

我在文件中只有这些选项

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port t$
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/public/

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

我已将文档根目录更改为

DocumentRoot /var/www/html/public/

现在,当我尝试访问我的Laravel应用程序时,通过123.xxx.xxx.xxx/显示主页并且运行良好。它也获得了所有的GET变量。例如:123.xxx.xxx.xxx?type=wefwef

但是当我转到123.xxx.xxx.xxx/login之类的其他链接时,它会给我一个错误

Not Found

The requested URL /login/ was not found on this server.

Apache/2.4.7 (Ubuntu) Server at 104.236.234.85 Port 80

我的routes.php在localhost上运行良好。但不是在这台服务器上。请帮我。

10 个答案:

答案 0 :(得分:96)

看起来您必须通过将此添加到您的vhost来启用.htaccess

<Directory /var/www/html/public/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

如果这不起作用,请确保您已启用mod_rewrite

在进行更改后不要忘记重启apache! (service apache2 restart

答案 1 :(得分:34)

通过执行以下操作我解决了: 检查apache中是否有名为rewrite.load的模块:

cd /etc/apache2/mods-enabled/

如果不存在,请执行以下摘录:

sudo a2enmod rewrite

否则,请更改Apache配置文件以合并使用“友好URL”。

sudo nano /etc/apache2/apache2.conf

在编辑器中找到以下代码:

<Directory /var/www/> 
   Options Indexes FollowSymLinks
   AllowOverride None
   Require all granted
</Directory> 

更改为:

<Directory /var/www/> 
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

之后通过以下方式重启Apache服务器:

sudo /etc/init.d/apache2 restart

答案 2 :(得分:20)

首先启用a2enmod rewrite 接下来重启apache

/etc/init.d/apache2 restart

click here for answer these question

答案 3 :(得分:2)

对于在无聊的盒子里的Ubunutu 18.04 ...这对我有帮助

  1. 确保www-data有权访问.htaccess文件

      
        sudo chown www-data.www-data .htaccess
      
    
  2. 编辑apache2 conf以允许符号链接等

      
        sudo nano /etc/apache2/apache2.conf
      
    

    将此添加到文件中

<Directory /var/www/html/>
  Options Indexes FollowSymLinks
  AllowOverride all
  Require all granted
</Directory>

  1. 重新启动apache2服务器

    sudo service apache2 restart

我希望这对某人有帮助。

答案 4 :(得分:1)

或者,您可以替换.htaccess文件中的所有内容

Options +FollowSymLinks -Indexes
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

在此处查看文档。 https://laravel.com/docs/5.8/installation#web-server-configuration

答案 5 :(得分:1)

我在 cPanel 中遇到了同样的问题,我解决了在这些行下方添加 .htaccess 文件的问题

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

答案 6 :(得分:0)

在httpd.conf文件中,您需要删除#

#LoadModule rewrite_module modules/mod_rewrite.so
删除#行后,

将如下所示:

LoadModule rewrite_module modules/mod_rewrite.so

Apache重启

答案 7 :(得分:0)

太晚了......但是为了好处 您可以编辑.htaccess文件 评论这一行

  #  RewriteRule ^ index.php [L]

答案 8 :(得分:0)

如果仍然遇到问题,除了所有答案外,还可以编辑APP_URL文件并将 APP_URL=similar_to_my_avatar_link 设置为您的域名,如下所示:

React Fragment

答案 9 :(得分:-1)

确保您已启用 mod_rewrite

restart apache

并清除浏览器的 Cookie ,以便在 .htaccess 再次阅读