.htaccess 我正在尝试为Laravel 9应用程序设置301重定向[重复]

hsvhsicv  于 2023-04-21  发布在  其他
关注(0)|答案(2)|浏览(134)

此问题已在此处有答案

Apache redirection of both http to https and non www to www(1个答案)
4天前关闭。
我正在尝试为Laravel 9应用程序设置301重定向。该应用程序托管在apache2服务器上。
1.从http重定向到https
1.从https://example.com重定向到https://www.example.com
我在我的.htaccess文件中使用以下代码:

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^public_html\/example\/public$ "https\:\/\/www\.example\.com\/" [R=301,L]

我不知道我在这里错过了什么。我已经花了过去几天试图解决这个问题,但找不到任何工作的解决方案。

368yc8dk

368yc8dk1#

我能够通过在RewriteEngine On之后将以下内容添加到.htaccess文件来设置301重定向:

RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
qnzebej0

qnzebej02#

您提供的代码似乎不正确,无法实现您提到的重定向。下面是一个正确的版本,应该可以工作:

RewriteEngine On

# Redirect from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Redirect from non-www to www with HTTPS
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

规则解释:
第一条规则检查请求是否使用HTTP(而不是HTTPS),如果是,则使用[R=301]标志重定向到相同的URL,但使用HTTPS,这表示永久重定向。%{HTTP_HOST}和%{REQUEST_URI}分别用于捕获域名和请求的URI。
第二条规则检查请求是否使用HTTPS并且域名开头没有“www.”,如果是,则重定向到相同的URL,但使用[R=301]标志添加“www.”,这表示永久重定向。%{HTTP_HOST}和%{REQUEST_URI}分别用于捕获域名和请求的URI。
请确保将这些规则放在.htaccess文件的顶部,在任何其他重写规则之上,并在RewriteEngine On指令之后。此外,请记住在对.htaccess文件进行更改后重新启动Apache服务器,以使更改生效。

相关问题