.htaccess 重定向,不带冒号

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

我正在尝试重定向应用程序链接,但未添加中间冒号 (:)。这可能是一个简单的问题,但我找不到解决方案。

目前,我有以下.htaccess:

RewriteEngine on 
RewriteRule ^(.*)$ http://ts3server://ts3.domain.com [R=301,L]

结果:

http://ts3server//ts3.domain.com
.htaccess
1个回答
0
投票

从评论来看,其意图似乎是重定向到

ts3server://ts3.domain.com
ts3server
是预期的协议,而不是您规则中所述的
http
)。

在这种情况下,限制是 mod_rewrite (不是 Apache 本身)。

ts3server
不是 mod_rewrite 理解的协议,并且由于 substitution 字符串不是以斜杠开头,因此它被视为 relative URL 路径,因此(默认情况下)目录前缀(即
/home/domain/web/domain.co/public_html/
) 在构建要重定向到的 URL 时添加回来(在
Location
标头中)。

您可以尝试使用 mod_alias

Redirect
RedirectMatch
指令代替。

您的规则似乎建议所有内容应重定向到单个目标(多对一) - 这看起来不正确,但如果这是意图,则使用

RedirectMatch
。例如:

RedirectMatch 301 ^/ ts3server://ts3.domain.com

(目标URL末尾是否应该有一个尾部斜杠?)

否则,如果目的是将

/something
重定向到
ts3server://ts3.domain.com/something
,则使用
Redirect
指令,该指令使用简单的前缀匹配(自动将匹配复制到目标的末尾)。例如:

Redirect 301 / ts3server://ts3.domain.com/

(请注意目标上的尾部斜杠 - 在本例中是强制的,否则除了对根的请求之外,您将得到格式错误的重定向。)

确保在测试之前清除浏览器缓存,并首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。

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