【问题标题】:Laravel assets, routes and pagesLaravel 资产、路线和页面
【发布时间】:2016-03-16 04:02:27
【问题描述】:

我认为这很容易,但我自己真的很困惑。

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

因此,我认为我必须将对 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>

hosts 文件中没有配置任何内容。

目标:如何通过隐藏索引将所有请求从 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>

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

【问题讨论】:

  • 您是否忘记在您的虚拟主机配置中的&lt;Directory&gt; 指令中添加AllowOverride all

标签: php apache laravel


【解决方案1】:

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

如果没有检查Pretty Url 部分。

为了安全起见,还要确保将 &lt;Directory&gt; 指令放在 vhost 配置中。

例如:

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

关于 app.php 中的 'url' =&gt; 'http://127.0.0.1/public', 我很确定 /public 有点额外。

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

【讨论】:

  • Pretty url 部分被选中。目录部分解决了我的问题。谢谢。
【解决方案2】:

您需要为此重写规则:

Options +FollowSymLinks
RewriteEngine On

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2021-06-26
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    相关资源
    最近更新 更多