【问题标题】:.htaccess redirect url with query string to other page + query string.htaccess 将带有查询字符串的 url 重定向到其他页面 + 查询字符串
【发布时间】:2020-12-14 04:03:03
【问题描述】:

我的 .htaccess 文件遇到问题,而且我对 PHP 的了解有限,我似乎无法解决这个问题。

目标:我想重定向进入我的主页但具有查询字符串的流量,以重定向到查询字符串完整的不同页面。像这样:

https://www.mywebpage.com/?wd8RL4T6Q00&17.07&52LJqY-emLU&0

https://www.mywebpage.com/player.html?wd8RL4T6Q00&17.07&52LJqY-emLU&0

用户只能看到第一页和底层页面,如 (https://www.mywebpage.com/howto.html) 仍然必须是可访问的。

在伪代码中(但有点类似于 javascript;)我的解决方案类似于:

if (querystring) {
  redirect to './player.html' + querystring
}

我尝试过的:

RewriteEngine On
RewriteCond %{QUERY_STRING} (.*)
RewriteRule player.html  %1

但这似乎以某种方式重定向所有流量.. 提前感谢您的帮助!

【问题讨论】:

    标签: .htaccess redirect mod-rewrite query-string


    【解决方案1】:

    您当前的 RegExp 匹配所有内容。这就是.* 的意思。相反,如果您希望查询字符串至少包含 1 个字符,则可以将其更改为 .+。我认为这可以解决您当前的问题。

    然后,对于重定向:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} (.+)
    RewriteCond %{REQUEST_URI} ^/?$
    RewriteRule .* /player.html [L]
    

    【讨论】:

    • 嗨,大安,谢谢!这样可行!现在它只选择其中包含查询字符串的链接。 RewriteCond %{QUERY_STRING} (.+)
    • 太棒了!如果这是您问题的解决方案,请接受我的回答:)
    • 嗯,这是第一部分.. 但不是第二部分。我猜这行现在是: RewriteCond %{QUERY_STRING} (.+) 所以它只重写其中包含查询字符串的链接。但不是这一行: RewriteRule player.html %1 所以它仍然会出现 500 错误。你知道我可以做些什么来将它引用到带有查询字符串的正确页面吗?
    • 我已添加到我的答案中。这是您希望实现的目标吗?
    • 嗨,Daan,再次感谢您的回答!我收到了 ERR_TOO_MANY_REDIRECTS。重定向到 /player.html?wd8RL4T6Q00&17.07&52LJqY-emLU&0 时,它可能再次接收到查询字符串?不知道重定向后是否再次读取 .htaccess 文件。用户可见的 URL 现在也更改为:mywebpage.com/player.html?wd8RL4T6Q00&17.07&52LJqY-emLU&0。这不应该发生。它应该说:mywebpage.com/?wd8RL4T6Q00&17.07&52LJqY-emLU&0
    猜你喜欢
    • 1970-01-01
    • 2014-07-08
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    相关资源
    最近更新 更多