如何绕过网址中的公共文件夹(Lavarel 5.4)

时间:2018-02-21 11:51:13

标签: php .htaccess laravel-5

我已阅读并尝试过针对此问题的不同解决方案,包括此帖Laravel 5 - Remove public from URL中的问题,但它对我不起作用。 我有一个名为' abimswake' - 根文件夹。每次我必须访问我的项目时,我都会通过此网址http://localhost:8080/abimswake/public/login访问 在尝试该帖子中的所有解决方案后,当我尝试访问相同的网址时,我的网址会更改为http://localhost:8080/public/public

然后我也想知道如果没有公众,网址将会是什么样子。请有人帮助我。我的.htaccess文件在这里

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

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    RewriteRule ^(.*)$ public/$1 [L]

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

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

1 个答案:

答案 0 :(得分:1)

更新您的Web服务器的虚拟主机以指向abimswake / public并使用公共目录中的默认Laravel .htaccess文件。

默认htaccess

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

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

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

Apache虚拟主机示例

<VirtualHost *:80>
  ServerName hostname-goes-here
  DocumentRoot "/path/to/abimswake/public"
  <Directory "/path/to/abimswake/public">
    AllowOverride all
  </Directory>
</VirtualHost>

Nginx虚拟主机示例

server {
    listen 80;

    root /path/to/abimswake/public;
    index index.php index.html index.htm;

    server_name hostname-goes-here;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

这将从公共目录服务器并使用您的主机名(目前您使用localhost,我建议创建自定义主机名)。结合默认的.htaccess,您的网址中不应包含不需要的子目录。