.htaccess:如果使用 Opera 浏览器,则将网站的所有 URL 重定向到特定页面

问题描述 投票:0回答:1

如果检测到 Opera UA,我想重定向用户。

以下设置部分工作正常:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Opera [NC]
RewriteRule ^$ https://example.com/sub1/ [L,R=301]

当访问 URL https://example.com/ 时,用户被正确重定向到 https://example.com/sub1/,但是当访问任何其他 URL 时,例如 https://example。 com/example-1https://example.com/example-2 等,用户未按预期重定向。

我还尝试了以下两个修改后的字符串:

RewriteRule ^(.*)$ https://example.com/sub1/ [L,R=301]

RewriteRule ^(.*) https://example.com/sub1/ [L,R=301]

使用两个修改后的字符串,用户将从任何 URL 正确重定向到 https://example.com/sub1/。但是,html 页面未呈现,并显示以下错误消息:“页面未正确重定向”

有人知道我可以使用的有效正则表达式吗?

apache .htaccess mod-rewrite
1个回答
0
投票

您上次重写规则的问题是浏览器陷入了无限重定向循环。当您访问指向另一个 URL 的 URL,而该 URL 又指向第一个 URL 时,就会发生无限重定向循环。为防止这种情况,您必须排除要重定向到的文件夹。这里有一些可能性。还要记住在测试后将

R=302
更改为
R=301

RewriteCond %{REQUEST_URI} !^/sub/
RewriteRule (.*) /sub/ [R=302,L]

这也可以完成这项工作:

RewriteRule !sub /sub/ [R=302,L]

我刚才发现的另一个解决方案来自先生。白色,其中使用了

REDIRECT_STATUS
环境变量。 先生见这里这里。 White 原始答案和有关此方法的更多详细信息。

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule (.*) /sub/$1 [R=302,L]
© www.soinside.com 2019 - 2024. All rights reserved.