首页 > 解决方案 > 用于 SSL 和公用文件夹重定向的 .htaccess 规则

问题描述

我想编辑我的 .htaccess 文件,以便对所有请求进行加密(我有 SSL 证书处于活动状态)。我正在尝试运行一个 Laravel 应用程序,该应用程序在公共文件夹中有索引文件,我想让用户访问我的页面,而不需要 URL 中的 /public/ 部分。

到目前为止,我设法做到了这一点:

这部分让我可以访问没有 /public/ 部分的页面。

RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]

这部分将所有数据重定向到 HTTPS:

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://domain.club/public_html/1 [R,L]

问题是,我如何将这两者合并在一起?它们分开工作,但如果我把它放在 .htaccess 文件中就不行了。

.htaccess 文件位于public_html根文件夹中。Laravel 文件夹(包括public)位于此文件夹中。

标签: laravelapache.htaccess

解决方案


尝试这个

.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>

推荐阅读