如何从url中删除/public/并自动将http强制为https?
我的根.htaccess (我创建它)
<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)
<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
发布于 2019-09-19 17:54:38
我认为您需要使用以下命令来启用rewrite_url
$ sudo a2enmod rewrite和
重新启动apache服务器
$ sudo systemctl restart apache2您的站点已启用/000-default.conf
DocumentRoot /var/www/html/yourapp/public也许你可以使用
RewriteBase "yourapp/public/"或参考this answer。
Rename server.php in your Laravel root folder to index.php
Copy the .htaccess file from /public directory to your Laravel root folder.发布于 2019-09-19 17:57:03
您遇到的问题是您已经将文档根目录设置为项目的根目录。在apache虚拟主机配置中,您需要将文档根目录设置为公共目录。
例如:
DocumentRoot /var/www/yourproject/public这样一来,public就不会出现在URL中。
如果你使用的是共享主机,你需要将你的项目的根目录移到上面的public_html/,删除public_html,然后将你的public目录重命名为public_html。然后,您可以转到并修改引导程序文件以使用此路径。你也可以符号链接它。
发布于 2019-09-19 18:01:38
将这两行添加到公用文件夹htaccess文件中
RewriteCond %{HTTPS} !=on
RewriteRule .* https://yourdomain.com%{REQUEST_URI} [R,L]您的public/.htaccess的完整代码
<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>https://stackoverflow.com/questions/58008288
复制相似问题