首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel从url中删除公共地址并在.htaccess中强制使用https

问Laravel从url中删除公共地址并在.htaccess中强制使用https
EN

Stack Overflow用户
提问于 2019-09-19 17:50:20
回答 4查看 1.5K关注 0票数 1

如何从url中删除/public/并自动将http强制为https?

我的根.htaccess (我创建它)

代码语言:javascript
复制
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
    RewriteCond %{HTTPS} !on
    RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

public/.htaccess (默认为laravel)

代码语言:javascript
复制
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

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

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

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

但它不工作-没有自动http到https重定向。

所以我需要结合使用.htaccess从url中删除公共文件夹和强制http到https

EN

回答 4

Stack Overflow用户

发布于 2019-09-19 17:54:38

我认为您需要使用以下命令来启用rewrite_url

代码语言:javascript
复制
$ sudo a2enmod rewrite

和

重新启动apache服务器

代码语言:javascript
复制
$ sudo systemctl restart apache2

您的站点已启用/000-default.conf

代码语言:javascript
复制
 DocumentRoot /var/www/html/yourapp/public

也许你可以使用

代码语言:javascript
复制
RewriteBase "yourapp/public/"

或参考this answer。

代码语言:javascript
复制
Rename server.php in your Laravel root folder to index.php
Copy the .htaccess file from /public directory to your Laravel root folder.
票数 0
EN

Stack Overflow用户

发布于 2019-09-19 17:57:03

您遇到的问题是您已经将文档根目录设置为项目的根目录。在apache虚拟主机配置中,您需要将文档根目录设置为公共目录。

例如:

代码语言:javascript
复制
DocumentRoot /var/www/yourproject/public

这样一来,public就不会出现在URL中。

如果你使用的是共享主机,你需要将你的项目的根目录移到上面的public_html/,删除public_html,然后将你的public目录重命名为public_html。然后,您可以转到并修改引导程序文件以使用此路径。你也可以符号链接它。

票数 0
EN

Stack Overflow用户

发布于 2019-09-19 18:01:38

将这两行添加到公用文件夹htaccess文件中

代码语言:javascript
复制
 RewriteCond %{HTTPS} !=on
 RewriteRule .* https://yourdomain.com%{REQUEST_URI} [R,L]

您的public/.htaccess的完整代码

代码语言:javascript
复制
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

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

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

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

    RewriteCond %{HTTPS} !=on
    RewriteRule .* https://yourdomain.com%{REQUEST_URI} [R,L]
</IfModule>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58008288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档