我已通过在.htaccess
中应用以下代码从网址中删除了公共字词<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
毫无疑问,它正在发挥作用。但也试图将永久重定向http设置为https。在.htaccess中使用以下代码:
RewriteEngine on
RewriteCond %{HTTPS} !^on
RewriteRule ^(.*)$ public/$1 [L]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
请告诉我问题在哪里?它应该从url中删除公用文件夹以及永久重定向到https URL
答案 0 :(得分:1)
RewriteCond
仅适用于 next RewriteRule
RewriteCond指令定义规则条件。一个或多个RewriteCond可以在RewriteRule指令之前。然后仅在URI的当前状态与其模式匹配且满足这些条件时才使用以下规则。
因此,在您的情况下,您必须在第二个RewriteCond
前面移动RewriteRule
RewriteRule ^(.*)$ public/$1 [L]
RewriteCond %{HTTPS} !^on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
虽然,既然你想强制执行HTTPS,你应该把它移到前面,例如
RewriteCond %{HTTPS} !^on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteRule ^(.*)$ public/$1 [L]
如果一切正常,您可以将R
替换为R=301
。切勿使用R=301
进行测试。