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

我有一个 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

我已将 Document 根目录更改为

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

我在本地主机上运行的 outoutes.php 很好。但是在这个服务器上不行。请帮助我。

228451 次浏览

This looks like you have to enable .htaccess by adding this to your vhost:

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

If that doesn't work, make sure you have mod_rewrite enabled.

Don't forget to restart apache after making the changes! (service apache2 restart)

First enable a2enmod rewrite next restart the apache

/etc/init.d/apache2 restart

click here for answer these question

In httpd.conf file you need to remove #

#LoadModule rewrite_module modules/mod_rewrite.so

after removing # line will look like this:

LoadModule rewrite_module modules/mod_rewrite.so

And Apache restart

too late.. but for the benefit you can edit your .htaccess file comment this line

  #  RewriteRule ^ index.php [L]

Make sure you have mod_rewrite enabled.

restart apache

and clear cookies of your browser for read again at .htaccess

I resolved by doing the following: Check if there is a module called rewrite.load in your apache at:

cd /etc/apache2/mods-enabled/

If it does not exist execute the following excerpt:

sudo a2enmod rewrite

Otherwise, change the Apache configuration file to consolidate use of the "friendly URL".

sudo nano /etc/apache2/apache2.conf

Find the following code inside the editor:

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

Change to:

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

After that restart the Apache server via:

sudo /etc/init.d/apache2 restart

In addition to all the answers if you still encounter some variation of the problem, edit the .env file and set APP_URL to your domain name as in:

 APP_URL=similar_to_my_avatar_link

Alternatively you could replace all the contents in your .htaccess file

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]

See the docs here. https://laravel.com/docs/5.8/installation#web-server-configuration

For Ubunutu 18.04 inside a vagrant box ... This is what helped me

  1. Ensure www-data has permissions to the .htaccess file

    
    sudo chown www-data.www-data .htaccess
    
    
  2. edit the apache2 conf to allow for symlinks etc

    
    sudo nano /etc/apache2/apache2.conf
    
    

    Add this to the file

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

  1. Restart your apache2 server

    sudo service apache2 restart

I hope this helps someone.

I have faced the same problem in cPanel and I fixed my problem to add in .htaccess file below these line

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

Add the following to .htaccess in public folder.

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>


RewriteEngine On


# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]


# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]


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

In current version of Apache in httpd.conf there are lines:

DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
...
</Directory>

instead of earlier here mentioned:

DocumentRoot /var/www/
<Directory /var/www/
...
</Directory>

It depends on your server's directory structure, but by default I guess it can look like this.

As was recommended, inside Directory tag I changed options like this:

    Options Indexes FollowSymLinks
AllowOverride All
Require all granted

by default it was AllowOverride none. It helped.

And of course LoadModule rewrite_module modules/mod_rewrite.so in the same file should be switched on.