Laravel资产,路线和网页

时间:2015-12-10 13:32:39

标签: php apache laravel

我觉得这很简单,但我真的很困惑。

  1. myproject.com/index.php显示我的项目主页
  2. myproject.com也显示了我的项目主页。
  3. 在第一种情况下,路由后工作正常(即:myproject.com/index.php/register)
  4. 在第二种情况下,路由失败后(即:myproject.com/register)出现以下错误:在此服务器上找不到请求的URL /寄存器。
  5. 因此,我认为我必须将myproject.com的每个请求重新路由到myproject.com/index.php

    app / config / app.php:

    'url' => 'http://127.0.0.1/public',
    

    etc / httpd / conf / httpd.conf:

    <VirtualHost *:80>   
         DocumentRoot "/var/www/html/myproject/public/"
         ServerName myproject.com
    </VirtualHost>
    

    主机文件中未配置任何内容。

    目标:如何使用隐藏索引将来自 myproject.com 的所有请求重新路由到 myproject.com/index.php 。 php部分来自用户?

    访客应该看到:myproject.com 但我希望他们真正达到:myproject.com/index.php

    解决方法:

    <VirtualHost *:80>   
        DocumentRoot "/var/www/html/myproject/public/index.php"
        ServerName myproject.com
    </VirtualHost>
    

    结果:我无法通过404获取资产(js,css文件)结果,因为我的浏览器不允许访问 myproject.com/public/ 。在此虚拟主机设置中,Root已设置为 myproject.com/public/index.php

2 个答案:

答案 0 :(得分:2)

检查公共目录中是否存在.htaccess文件。

如果没有,请查看Pretty Url部分。

另外,请确保在vhost配置中添加<Directory>指令只是为了安全起见。

例如:

<Directory "/var/www/html/myproject/public/">
     AllowOverride All
     Allow from All
 </Directory>

关于app.php中的'url' => 'http://127.0.0.1/public',我非常确定/public有点额外。

'url' => 'http://127.0.0.1',应该可以正常工作。

答案 1 :(得分:1)

您需要为此重写规则:

Options +FollowSymLinks
RewriteEngine On

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

Laravel docs:http://laravel.com/docs/5.1#pretty-urls