laravel 在此服务器上找不到请求的 url
Posted
技术标签:
【中文标题】laravel 在此服务器上找不到请求的 url【英文标题】:laravel the requested url was not found on this server 【发布时间】:2015-03-30 07:38:52 【问题描述】:我有一个 Ubuntu 14.04 内核。我正在这个服务器上安装我的 Laravel 应用程序。 安装后,我尝试将根目录设置为公共。
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/
现在,当我尝试通过123.xxx.xxx.xxx/
访问我的 Laravel 应用程序时,它会显示主页并且运行良好。它也获取所有 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 上运行良好。但不在此服务器上。请帮我。
【问题讨论】:
123.xxx.xxx.xxx/index.php/login
工作吗?
我遇到了完全相同的问题,接受的答案对我不起作用,原来我忘记启用 modrewrite。其他一些答案涵盖了所有基础。在 Ubuntu 上你只是 sudo a2enmod rewrite
,但我的东西是在 Apple MacBook 上,所以我必须在 /etc/apache2/httpd.conf 中找到并取消注释 modrewrite 行。
【参考方案1】:
看来您必须通过将其添加到您的虚拟主机来启用 .htaccess
:
<Directory /var/www/html/public/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
如果这不起作用,请确保您已启用 mod_rewrite。
修改后别忘了重启 apache! (service apache2 restart
)
【讨论】:
好的,成功了。也只需要service apache2 restart
。非常感谢:)
在哪里可以找到 .htacces?对不起,愚蠢的问题,但我找不到:)
@MilanNz .htaccess
可以在您的应用程序的public
目录中找到。但是,此答案中的代码位于 vhost 文件中。它的位置取决于您的服务器。 (例如,对于 apache2 和 unix,它通常位于 /etc/apache2/sites-available
)
FollowSymLinks 对我来说似乎很关键。
运行 sudo a2enmod rewrite
以启用 mod_rewrite【参考方案2】:
我通过执行以下操作解决了: 检查您的 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
【讨论】:
谢谢,它在 2019 年也对我有用。但这是什么意思? 由于某些原因,激活重写的其他命令不起作用,但是这个命令起作用了。谢谢。 非常感谢我的朋友!!!我真的很感谢你的回答!你帮了我很多!谢谢! 是的。它对我有用。我将它用于我的 Laravel 项目。 Ubuntu 18.04,2020 年 6 月,已修复问题,非常感谢!【参考方案3】:首先启用a2enmod rewrite
下次重启apache
/etc/init.d/apache2 restart
click here for answer these question
【讨论】:
虽然这在理论上可以回答这个问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。 @rohit 我无法在这里更新答案,点击上面的链接你会找到答案【参考方案4】:或者,您可以替换 .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】:Ubunutu 18.04 在一个流浪的盒子里......这对我有帮助
确保 www-data 对 .htaccess 文件具有权限
sudo chown www-data.www-data .htaccess
编辑 apache2 conf 以允许符号链接等
sudo nano /etc/apache2/apache2.conf
将此添加到文件中
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
重启你的 apache2 服务器
sudo service apache2 restart
我希望这对某人有所帮助。
【讨论】:
你的回答也很好解决了这个问题。我们需要做的就是 AllowOverride all【参考方案6】:如果您仍然遇到问题的某些变体,除了所有答案之外,编辑.env
文件并将APP_URL
设置为您的域名,如下所示:
APP_URL=similar_to_my_avatar_link
【讨论】:
【参考方案7】:在 httpd.conf 文件中你需要删除 #
#LoadModule rewrite_module modules/mod_rewrite.so
删除 # 行后将如下所示:
LoadModule rewrite_module modules/mod_rewrite.so
Apache 重启
【讨论】:
【参考方案8】:为时已晚.. 但为了利益 你可以编辑你的 .htaccess 文件 评论这一行
# RewriteRule ^ index.php [L]
【讨论】:
【参考方案9】:确保您已启用 mod_rewrite。
restart apache
并清除浏览器的 cookies,以便在 .htaccess
处再次读取【讨论】:
【参考方案10】:我在cPanel
中遇到了同样的问题,我修复了我的问题,将.htaccess
文件添加到这些行下方
# Handle Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
【讨论】:
【参考方案11】:将以下内容添加到公用文件夹中的 .htaccess 中。
<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>
【讨论】:
【参考方案12】:Akun free fire saya ke hack Garena tolong saya Akun Facebook saya sudah di ganti sama yang nge hack nya di ganti dengan 电子邮件 yang nge hack nya jadi saya gak bisa login lagi tolong lah Garena plis
【讨论】:
以上是关于laravel 在此服务器上找不到请求的 url的主要内容,如果未能解决你的问题,请参考以下文章
无法浏览到新 Laravel Apache2 设置上的主 URL 以外的任何内容。错误:在此服务器上找不到请求的 URL
Laravel 8“在此服务器上找不到请求的资源 /dashboard。”
Laravel - 未找到 - 在此服务器上找不到请求的资源/控件