htaccess 正则表达式重定向维护 url 结构

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

我正在尝试从

domain/web/something
重定向到
sub.domain/web/something
,并且仅适用于 /web/,但此代码正在重定向所有网站

Options +FollowSymlinks -MultiViews
RewriteEngine on

# http
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.es\web\$ [NC]
RewriteCond %{SERVER_PORT} =80
RewriteRule ^(.*)$ http://sub.domain.es/web/$1 [R=301,L]

# https
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.\web\es$ [NC]
RewriteCond %{SERVER_PORT} =443
RewriteRule ^(.*)$ https://sub.domain.es/web/$1 [R=301,L]

我尝试了上面的代码,希望将一些网址组重定向到另一个网址组,但我得到的是完整的网站重定向

regex wordpress .htaccess
1个回答
0
投票

使用 /web# 进行重定向可能不起作用的原因是浏览器处理 URL 片段的方式,也称为“锚点”(URL 中 # 之后的部分)。

当浏览器向服务器发出请求时,请求中不包含 URL 片段。这意味着服务器不知道 URL 的 # 部分,因此无法基于它进行重定向。

换句话说,如果您有一个像domain.es/web#section1这样的URL,则请求中只有服务器和domain.es/web。 #section1 片段完全由浏览器处理,不会发送到服务器。

因此,您无法使用 .htaccess 或任何其他服务器端配置基于 URL 片段进行重定向。您需要在客户端处理这个问题,可能使用 JavaScript。

如果您需要基于 URL 片段进行重定向,您可以考虑更改您的 URL 方案以使用路径而不是片段,例如将domain.es/web#section1 更改为domain.es/web/section1。这将允许服务器根据 URL 的完整部分进行查看和重定向。

© www.soinside.com 2019 - 2024. All rights reserved.