我正在尝试重定向应用程序链接,但未添加中间冒号 (:)。这可能是一个简单的问题,但我找不到解决方案。
目前,我有以下.htaccess:
RewriteEngine on
RewriteRule ^(.*)$ http://ts3server://ts3.domain.com [R=301,L]
结果:
http://ts3server//ts3.domain.com
从评论来看,其意图似乎是重定向到
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(临时)重定向进行测试,以避免潜在的缓存问题。