【问题标题】:VERY simple 301 htaccess redirect not working?非常简单的 301 htaccess 重定向不起作用?
【发布时间】:2018-02-02 13:03:50
【问题描述】:

非常简单的 URL 重定向来自:

http://xxxx.net/index.php?k=Nomor-Bangkok&page=0

到:

http://xxxx.net/Nomor-Bangkok/online-0

当我尝试这个时(旧网址到新网址):

Redirect 301 /index.php?k=Nomor-Bangkok&page=0 /Nomor-Bangkok/online-0

我得到一个没有重定向的 200 标头响应。

但是当我把它转过来时(新网址到旧网址):

Redirect 301 /Nomor-Bangkok/online-0 /index.php?k=Nomor-Bangkok&page=0

然后我得到一个从新 URL 到旧 URL 的 301 重定向。但这不是我想要的。

我做错了什么?

【问题讨论】:

  • “我做错了什么?” - Redirect 指令适用于 URL paths,但 /index.php?k=Nomor-Bangkok&page=0 不是路径,即一个路径(/index.php一个查询字符串(?k=Nomor-Bangkok&page=0

标签: apache .htaccess redirect mod-rewrite


【解决方案1】:

来自docs:“mod_alias 旨在处理简单的 URL 操作任务。对于更复杂的任务,例如操作查询字符串,请使用 mod_rewrite 提供的工具。”

因此,对于您的确切示例,您可以这样做:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^k=Nomor-Bangkok&page=0$ [NC]
RewriteRule index.php /Nomor-Bangkok/online-0? [NC,L,R]

或者,如果这是您需要的更一般的规则:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^k=([a-zA-Z0-9-]+)&page=([0-9]+)$ [NC]
RewriteRule index.php /%1/online-%2? [NC,L,R]

这会将/index.php?k=AnyString&page=AnyNumber 重定向到/AnyString/online-AnyNumber

【讨论】:

  • 你是我的英雄。奇迹般有效。并感谢有关它的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 2013-04-06
  • 2017-06-30
  • 2014-07-05
  • 2014-12-21
  • 2011-03-08
相关资源
最近更新 更多