繁体   English   中英

如何为生产服务器配置laravel项目并在url中删除public

[英]How to configure laravel project for production server and remove public in url

LARAVEL 5.0 | APACHE 2.4.7 | PHP 5.5.8

我知道这是一个非常受欢迎的问题。 很多人说将公共内容移动到根目录(由于安全问题我觉得很尴尬),重写.htaccess,创建虚拟主机。

我尝试创建虚拟主机,因为我认为这是更可接受的解决方案。

但是我的配置遇到了一些问题:

我正在运行easyphp同时,我喜欢测试我是否可以在设置它之前删除url中的公共路径。

httpd.conf文件

NameVirtualhost *:80
<VirtualHost *:80>
    DocumentRoot "${path}/data/localweb/quantum.dev/public"
    ServerAdmin admin@localhost
    ServerName quantum.dev
    ServerAlias www.quantum.dev
    <Directory "${path}/data/localweb/quantum.dev/public">
        AllowOverride All
        Options Indexes FollowSymLinks

        Order deny,allow
        Allow from quantum.dev
        Deny from all
        Require all granted
    </Directory>
</VirtualHost>

我修改了C:\\ Windows \\ System32 \\ drivers \\ etc.

主机

127.0.0.1       quantum.dev

当我尝试浏览http://127.0.0.1/quantum.dev/时 ,它将加载文件列表而不是公共项目

http://127.0.0.1/quantum.dev/ 在此输入图像描述

请将所有更改还原到目录。 恢复项目的默认结构和配置。 如果我没有弄错我并纠正我,如果我,你正在使用共享托管服务提供商。 如果是这种情况,这是一种更恰当的方式。

.htaccess中 ,您需要添加以下内容。

在文件的顶部添加以下行:

DirectoryIndex public/index.php

在这里:

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

将最后一条规则更改为:

RewriteRule ^ public/index.php [L]

现在,您需要做的就是将此文件(仅限.htaccess文件)移动到项目的根文件夹中。 通过这种方式,您可以将laravel项目结构维持在其原始状态。

把这个.htaccess文件放在公共文件夹附近

选项-MultiViews

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]

当您在c-panel中为您的域选择目录时,只需提供路径直到Laravel的公共目录,而不仅仅是Laravel的根目录。 这样你根本不需要改变.htaccess。

我刚刚将我的网站上传到制作并按照上述步骤操作。 它工作得很好。

这是我的配置,对我来说很好。 首先,您的虚拟主机配置应该是这样的:

ServerAdmin webmaster@domaine.dev
ServerName domaine.dev
DocumentRoot /var/www/mysiteweb/public/

    <Directory /var/www/mysiteweb/>
            Options -Indexes
            DirectoryIndex index.php index.html
            AllowOverride All
    </Directory>

之后,在.htaccess laravel文件中进行此操作:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

不要忘记检查mod_rewrite是否启用。

希望有所帮助。 问候。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM