其他路由而不是默认路由不适用于 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:

.htaccessindex.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了解更多信息

&lt;Directory&gt;&lt;/Directory&gt; 用于包含一组指令,这些指令仅适用于指定目录、该目录的子目录以及相应目录中的文件。

换句话说,Apache Web 服务器自动索引生成是通过使用 Options +IndexesOptions Indexes 指令启用的。

如果请求映射到目录的 URL,并且该目录中没有 DirectoryIndex,则 mod_autoindex 将返回目录的格式化列表。

【讨论】:

谢谢,但我想,我问了 2 个问题? @AliBhutta 这很有趣,因为它解决了您的两个问题。不允许您编制索引,Xampp 找不到其他页面 谢谢,我没有选择索引在 xampp 中的含义是什么?抱歉,如果这似乎是一个奇怪的问题。 嘿@AliBhutta 我将更新答案并尝试解释索引:) 谢谢,我想再问一件事,我们不能在没有“VirtualHost”的情况下将 xampp 用于 Laravel,正如您在回答中所说的那样?即,我不能使用 localhost/myapp/public,而不是使用 127.0.0.1::8000?

以上是关于其他路由而不是默认路由不适用于 XAMPP的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Laravel 中间件适用于单个路由而不适用于一组路由

路由不适用于 React 路由器 v4

CORS 标头不适用于 Express 云功能中的特定路由

更改 Laravel 中的默认登录路由

OSPF的HELLO报文,将路由的DEAD间隔设置为4倍而不是3倍的原因是啥?

.NET Web API CORS 不适用于所有路由