【问题标题】:How to solve route in Laravel 5 not working如何解决 Laravel 5 中的路线不起作用
【发布时间】:2015-11-04 20:37:35
【问题描述】:

我是新的 php 开发人员,有兴趣使用 laravel 框架5

当我访问链接localhost/project/public/

这是工作

我在路由中添加功能

> Route::get('home', function () {
>     return View::make('home.home'); });
> 
> Route::get('contact', function () {
>     return View::make('contact.contact'); });

我访问链接 localhost/project/public/home 或 localhost/project/public/contact

显示错误 404 页面未找到

但我可以通过 localhost/project/public/index.php/home 访问,但它没有 js 文件和 css 文件

在我的 htacess 文件中

选项 - 多视图

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

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

RewriteRule ^(.*)$ public/$1 [L] </IfModule>

我已经使用 xampp 并启用了 mod_rewrite

我错过了什么设置?

谢谢

【问题讨论】:

  • 尝试创建一个指向该 /public 的虚拟主机。我不知道你为什么最后有“RewriteRule ^(.*)$ public/$1 [L]”。你可以删除它。创建虚拟主机后,将您的域名例如:“my_domain.dev”添加到您的主机名(Linux 的 /etc/hosts)。然后,当您访问 my_domain.dev 时,它应该使用位于公共文件夹中的 css 文件正确呈现所有内容。另外我假设 home.blade.php 存在于 resources/views/home/ 中,而 contact.blade.php 存在于 resources/views/contact/ 中。
  • 这个问题主要是由mod-write引起的,但既然你已经启用了它,你应该重启你的xampp如果没有这样做
  • 为什么不使用“php artisan serve”为项目提供服务,这样可以保证工作,没有任何问题。
  • 为了改善我的答案,您可以通过显示您的虚拟主机配置来改善这个问题。我的回答不一定能解决问题,因为我不确定您的主机配置是否指向正确的位置。
  • 我只是移动了root/public/.htaccess to root/.htaccess,它可以工作

标签: php .htaccess mod-rewrite xampp laravel-5


【解决方案1】:

尝试使用以下命令查看您的路线:

php artisan route:list 

看看你会得到什么。

之后执行:

composer dump-autoload

再试一次。

【讨论】:

    【解决方案2】:

    我会说您的虚拟主机配置不正确。由于我无法确切地看到这是如何完成的,我的假设是您的虚拟主机没有将 public 设置为文档根目录:

    试试下面的方法。

    <Directory /var/www/vhosts/YOURHOST/public>
        AllowOverride None
        Options -Indexes +FollowSymLinks
    
        RewriteEngine On
        RewriteBase /
    
        RewriteRule ^(.*)/$ /$1 [L,R=301]
    
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </Directory>
    

    注意事项

    重写规则 ^(.*)$ public/$1 [L]

    所以基本上这将永远不会运行,因为之前的 RewriteRule 正在执行并由于 RewriteRule ^ index.php [L] 而停止

    【讨论】:

      【解决方案3】:

      把之前缓存的路由清空一次再试试

      php artisan route:clear
      

      【讨论】:

        【解决方案4】:

        你为什么不使用命令

        php artisan serve
        

        在您的项目根目录中,工匠文件可用 然后您可以使用 http://localhost:8000

        【讨论】:

          猜你喜欢
          • 2016-07-03
          • 1970-01-01
          • 1970-01-01
          • 2015-11-30
          • 2016-10-14
          • 2017-10-02
          • 2013-05-03
          • 2014-09-08
          相关资源
          最近更新 更多