.htaccess 具有硬编码特殊字符的htaccess重写规则

.htaccess 具有硬编码特殊字符的htaccess重写规则,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,有很多类似的问题,但它们似乎都不涉及目的地中的硬编码字符串。我只想将任何子域请求重定向到Google组,如下所示: RewriteEngine On Options +FollowSymlinks RewriteBase / RewriteCond %{HTTP_HOST} gg.domain.com$ RewriteRule ^(.*)$ https://groups.google.com/forum/#!forum/myforum 我相信问题在于这个角色被解释为一个注释,因此这句话被忽略

有很多类似的问题,但它们似乎都不涉及目的地中的硬编码字符串。我只想将任何子域请求重定向到Google组,如下所示:

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteCond %{HTTP_HOST} gg.domain.com$
RewriteRule ^(.*)$ https://groups.google.com/forum/#!forum/myforum
我相信问题在于这个角色被解释为一个注释,因此这句话被忽略了。我已经浏览了,我看到的唯一可能相关的选项是[B]和[NE],这两个选项似乎都没有帮助,因为我认为它们只适用于字符串转换。

您的url中的字符不应被视为注释,它不适合我。如果它被这样对待,你可以逃避它,让它释放它的特殊意义。转义是将\置于字符之前的行为。除此之外,您还需要[NE]标志来防止ascii编码

RewriteCond %{HTTP_HOST} gg.domain.com$
RewriteRule ^(.*)$ https://groups.google.com/forum/\#!forum/myforum [NE]

锚定信息以开头的部分从未实际发送到服务器。它完全由浏览器处理,因此您不能使用mod_rewrite来处理它,也不能通过服务器端脚本语言访问它。可以看到它的只有浏览器和客户端脚本,比如Javascript。摘自:@kmsdev由于该字符位于重写部分,因此其工作原理与预期一致。谷歌使用客户端脚本来找出背后的原因,并基于此加载正确的论坛。同样的问题,我的主机powweb忽略了该行并返回404。我有10个其他相同的重写,但目标URL不包括或!字符。那么您可能没有将其放在gg.domain.com链接到的目录中,或者您的主机对%{HTTP_host}执行了一些奇怪的操作。如果将rewriterule更改为rewriterule foo/bar,会发生什么情况?请求=%{the_request}&http_host=%{http_host}[R,L]。然后转到gg.domain.com/foo并查看结果url。我假设它位于正确的目录中,因为相同域的其他重定向工作正常。复制/粘贴该行返回404,但这次它重定向到htaccess中定义的我的404页面,而不是重定向到我的提供商自己的404页面。如果没有/foo,它会将我带到根页面domain.com。我建议与您的主机提供商联系。我不确定为什么会发生这种情况。