2015-12-10 106 views
0

我认为这是一个容易的,但我真的很困惑自己。Laravel资产,路线和页面

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

的这样,因为,我想,我不得不重新路线myproject.com每个请求myproject.com/index.php

应用程序/配置/ app.php:

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

等/ httpd的/ CONF/httpd.conf中:

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

在主机文件中没有配置任何内容。

目标:我怎样才能重新路由从所有请求myproject.commyproject.com/index.php与隐瞒用户的index.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/。在此虚拟主机设置中,Root已被设置为myproject.com/public/index.php

+0

您是否忘记在Vhost配置中的''指令中添加'AllowOverride all'? –

回答

2

检查.htaccess文件存在于你的公共目录。

如果没有检查Pretty Url部分。

另外请确保您将<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',应该工作正常。

+0

漂亮的网址部分被选中。目录部分已经解决了我的问题。谢谢。 –

+0

不客气。很高兴知道它帮助:) –

1

你需要重写规则如下:

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

+0

谢谢,但这已经存在。 –