【问题标题】:RewriteRule redirect not including parametersRewriteRule 重定向不包括参数
【发布时间】:2013-04-18 12:40:23
【问题描述】:

我想做的是重定向

http://example.com/sample/

http://example.com/this/that/?which=those

这是我尝试过的;

RewriteRule ^sample.*$ http://example.com/this/that/?which=those [R=301,L]

但它重定向到 http://example.com/this/that/ ,没有参数。

只有当我在url后面写一些东西(随机)时,它才会正确重定向,包括参数。

我做错了什么?非常感谢任何帮助!

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    你只需要这条规则:

    RewriteRule ^sample/?$ /this/that/?which=those [R=302,L,NC,QSA]
    

    确保在测试之前清除浏览器缓存并重新启动浏览器。

    重要提示:请记住在测试 mod_rewrite 规则时不要使用R=301 (Permanent Redirect)。仅在您验证它可以正常工作后,将R=302 (Temporary Redirect) 更改为R=301 (Permanent Redirect)

    【讨论】:

    • 在我发布这个之后,我清空了缓存解决了这个问题。它起作用了,但我仍在将 [code](sample) 重写为“sample/”到“this/that/?which=those”。感谢您向我展示了正确的方法,以及使用正确的标志。你这个男人,绝对标记为答案! +1
    • 有一个问题,为什么我在重写/重定向时必须使用完整的 URL (example.com)?没有它就行不通...谢谢!!
    • 正如我在上面的示例中所示,您不需要在重定向 URL 中使用域名。
    • 好吧,如果我不使用它,重定向包括我的网站结构(home/example/public_html/)...
    • 我认为你犯了一个错误:'/this/that/?which=those' 不应该没有第一个斜线 -> 'this/that/?which=those'?干杯
    【解决方案2】:

    将您的规则更改为:

    RewriteRule ^sample(.*)? http://example.com/this/that/?which=those [R=301,L]
    

    在这里,我们通过捕获通配符并使用可选的正则表达式标志使通配符成为可选:(.*)?

    因此,samplesample/test/hello 都会重定向。

    【讨论】:

      猜你喜欢
      • 2012-07-21
      • 2013-03-15
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多