其他路由而不是默认路由不适用于 XAMPP
Posted
技术标签:
【中文标题】其他路由而不是默认路由不适用于 XAMPP【英文标题】:Other routes rather than default one not working with XAMPP 【发布时间】:2020-12-04 23:39:26 【问题描述】:我有我的 Laravel 项目,如果我使用地址“localhost/app/public”,我的主(即欢迎)页面(welcome.blade.php)工作,但当我写我的其他像“localhost/app/public/anyother”这样的路由它显示错误消息,404 |未找到。 虽然默认路由和所有其他路由都适用于“php artisan serve”。
有两件事我想知道希望你不会介意。
1.如何解决 Laravel 自己的应用服务器上的 XAMPP 的这个问题,所有路由都可以正常访问?
2。为什么其他路由在本地 XAMPP 中无法正常使用“php artisan serve”?
我发现在 XAMPP 上运行 Laravel App 是:-
使用 xampp:
转到 C:\Windows\System32\drivers\etc\hosts 并添加一个新行,如:127.0.0.1 yoursite.local 转到xampp\apache\conf\extra\httpd-vhosts.conf下安装XAMPP的位置,然后在文件底部添加一个虚拟主机,如:
<VirtualHost *:80>
DocumentRoot "PATH_to_laravel_folder/public"
ServerName yoursite.local
</VirtualHost>
如果我接受此解决方案作为我的第 1 点,是否还有其他解决方案而不创建虚拟主机?如果我想使用 XAMPP 提供的 URL,例如“localhost/app/public”,还有其他解决方案吗?
【问题讨论】:
【参考方案1】:解决方案 1:
尝试将 Laravel 项目文件夹中的 server.php
重命名为 index.php
并将公共目录中的 .htaccess
文件复制到项目根文件夹中。
解决方案 2:
将.htaccess
和index.php
从公共目录复制到项目根目录
更改index.php
文件,如下所述:
//change line 22 to
require __DIR__.'/bootstrap/autoload.php';
//change line 36 to
$app = require_once __DIR__.'/bootstrap/app.php';
希望上述解决方案之一能在您的情况下运作良好。
【讨论】:
【参考方案2】:您的虚拟主机不好。您忘记了Directory
规范标签,并且不允许索引。
尝试编辑位于C:\xampp\apache\conf\extra\httpd-vhosts.conf
中的httpd-vhosts.conf
,如下所示:
# VirtualHost for LARAVEL.DEV
<VirtualHost laravel.dev:80>
DocumentRoot "C:\xampp\htdocs\laravel\public"
ServerAdmin laravel.dev
<Directory "C:\xampp\htdocs\laravel">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
您可以通过Apache documentation了解更多信息
<Directory>
和</Directory>
用于包含一组指令,这些指令仅适用于指定目录、该目录的子目录以及相应目录中的文件。
换句话说,Apache Web 服务器自动索引生成是通过使用 Options +Indexes
或 Options Indexes
指令启用的。
如果请求映射到目录的 URL,并且该目录中没有
DirectoryIndex
,则mod_autoindex
将返回目录的格式化列表。
【讨论】:
谢谢,但我想,我问了 2 个问题? @AliBhutta 这很有趣,因为它解决了您的两个问题。不允许您编制索引,Xampp 找不到其他页面 谢谢,我没有选择索引在 xampp 中的含义是什么?抱歉,如果这似乎是一个奇怪的问题。 嘿@AliBhutta 我将更新答案并尝试解释索引:) 谢谢,我想再问一件事,我们不能在没有“VirtualHost”的情况下将 xampp 用于 Laravel,正如您在回答中所说的那样?即,我不能使用 localhost/myapp/public,而不是使用 127.0.0.1::8000?以上是关于其他路由而不是默认路由不适用于 XAMPP的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Laravel 中间件适用于单个路由而不适用于一组路由