从Laravel网址中删除/public/index.php

时间:2014-12-03 06:20:15

标签: php .htaccess laravel-4

我对laravel很新。我已尝试按照解决方案删除' .public / index.php'来自Laravel网址。

我在root上有一个htaccess文件,在公共文件夹中有另一个。

在根文件中我写了

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

并在我写的公共文件夹的htaccess文件中

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

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

但没有任何效果。

仍然会打开laravel中的目录列表

我想要的只是将我的网址www.abc.com/public/index.php转换为www.abc.com/而不将文件从公共文件夹移到其他文件夹类型解决方案。

2 个答案:

答案 0 :(得分:1)

您只需修复网站.conf文件中的文档根目录和目录覆盖规则。

在Ubuntu上,您可以在/ etc / apache2 / sites-available

中找到它

您的文件应如下所示:

<VirtualHost *:80>

        ServerName xxx.com
        ServerAlias www.xxx.com

        ServerAdmin xxx@xxx.com
        DocumentRoot /var/www/html/laravel/public/  //<<< add public to your document root
        <Directory "/var/www/html/laravel/public">  ## <<< add the override rule if not exists
         AllowOverride all
        </Directory>


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined


</VirtualHost>

您的laravel应用程序在任何情况下都不应该在文档根目录中,因为您可以允许任何人访问它!


<强>旁注:

如果您使用的是plesk或c-panel,则可以在域设置中编辑文档根目录。

答案 1 :(得分:0)

在Apache配置中,将文档根目录设置为/yourapp/public - 这应该是根网站可访问文件夹;如果webroot不是Laravel的public文件夹,那么您可能不想要访问自己。