【问题标题】:Rewriting Query String URL in htaccess with 301 Redirect使用 301 重定向重写 htaccess 中的查询字符串 URL
【发布时间】:2012-12-21 04:12:00
【问题描述】:

我试图在 Stackoverflow 上的其他问题中找到解决我的问题的方法,但是尽管有很多这样的问题针对完全相同的问题得到了回答,但它有所不同,因为我在问我应该如何定义更多比重写条件中的两个查询字符串,

我正在尝试对查询字符串 URL 进行 301 重定向:

http://abc.com/index.php?arg1=abc&arg2=abc

将其屏蔽为

http://abc.com/prettified_url

,并尝试在 htaccess 中使用以下代码:

RewriteRule ^http://abc.com/index.php?arg1=abc&arg2=abc$ /prettified_url  [R=301,L,NC]

也尝试过使用:

RewriteCond %{HTTP_HOST} !^.*abc\.com
    RewriteRule .? - [S=2]
    RewriteCond %{REQUEST_URI} ^index.php
    RewriteCond %{QUERY_STRING} ^arg1=abc [NC]
    RewriteCond %{QUERY_STRING} arg2=abc [NC]
    RewriteRule ^(.*)$ /prettified_url [R=301,L]

    RewriteRule .? - [S=1]
    RewriteRule - -

还尝试在查询字符串 ReWrite Condition 中使用以下代码:

RewriteCond %{QUERY_STRING} ^arg1=abc&arg2=abc [NC]

不过,我看不到它被重定向到 /prettified_url

【问题讨论】:

  • 我第二次尝试使用复合形式的查询字符串成功,由于浏览器缓存,它无法正常工作,当我在新浏览器中运行规则时,代码运行良好..

标签: .htaccess redirect url-rewriting query-string


【解决方案1】:

试试下面的一个:

RewriteCond %{QUERY_STRING} ^arg1=abc&arg2=abc
RewriteRule (.*) http://abc.com/prettified_url? [L,R=301]

【讨论】:

  • 在问题本身中提到了使用相同的逻辑,但这不起作用
  • 您使用了 [NC] 而不是 [L,R 301] 并且缺少 ReqriteRule,所以我添加了上述内容。谢谢
  • 是的.. 也尝试过使用它,但它不起作用,顺便说一句 [NC] 只允许检查 args 值而不区分大小写,所以如果我们消除 NC 为什么会有帮助标记?
  • [NC] 没有问题,但您没有添加表示页面 301 重定向的 [L,R=301]
  • 无论如何,您遇到了哪些类型的错误?您是否还添加了 htaccess 以显示 abc.com/prettified_url 的页面?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
相关资源
最近更新 更多