【问题标题】:Htaccess URL redirect by matching url string and parametersHtaccess URL 通过匹配 url 字符串和参数重定向
【发布时间】:2011-11-10 15:24:51
【问题描述】:

我需要匹配 URL 格式并且依赖于 URL 匹配需要将传入的请求重定向到不同的页面。

例如

http://www.domain.com/path1/path2/ 错误的网址 -1/ ?var1=val1
http:// /www.domain.com/path1/path2/ another-wrong-url -1/ ?var1=val1
http://www.domain.com/ path1/path2/ third-wrong-url -1/?var1=val1
http://www.domain.com/path1/path2/ 第四个错误的网址 -1/?var1=val1

查看突出显示的 URL 匹配。它总是将 -1 作为 url 字符串。 。那需要重定向一个静态页面。

而其他一些 URL 总是将 var1 作为 URL Query String 参数。因此,如果 URL 将 var1 作为查询字符串,则需要将这些 URL 重定向到另一个静态页面。

所以我尝试了这个但没有奏效。请在这个重定向脚本中帮助我

  RewriteEngine on
  RewriteRule ^(path1/path2/[^-1]*)$ http://www.domain.com/target-page [L,R=301]

【问题讨论】:

    标签: .htaccess url-rewriting apache2


    【解决方案1】:

    1。以-1/ 结尾的 URL 规则:

    RewriteRule ^path1/path2/([^/]+)-1/$ http://www.domain.com/target-page [L,R=301]
    

    2。查询字符串中包含var1= 参数的规则:

    RewriteCond %{QUERY_STRING} (^|&)var1=([^&]*)(&|$)
    RewriteRule .* http://www.domain.com/another-target-page [L,R=301]
    

    注意: 使用这些规则,现有的查询字符串也将被传递到新的 URL(例如,/path1/path2/wrong-url-1/?say=meow 将变为 http://www.domain.com/target-page?say=meow)。要删除它,请在目标 URL 的末尾添加 ?(例如 http://www.domain.com/another-target-page? [L,R=301]

    【讨论】:

    • 太棒了。非常感谢。我已经添加了这个。 重写规则 ^wine/appellation/(.*)-1$ domain.com/gifts? [L,R=301] 效果很好。但是对于查询字符串仍然不起作用。我不知道在做什么错误。让我多尝试一下。
    • 这是我的错(错字):应该是% 字符而不是$:将${QUERY_STRING} 更改为%{QUERY_STRING}
    • 是的,我只添加了 %,并且在我昨天测试时它不起作用。今天肯定它的工作。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    相关资源
    最近更新 更多