【问题标题】:How Can I ReWrite flat link to a dynamic link and preserve the Query string?如何将平面链接重写为动态链接并保留查询字符串?
【发布时间】:2010-09-08 00:52:56
【问题描述】:

我想重写一个网址,例如:
http://my.project/mydomain.com/ANY_NUMBER_OF_CATEGORIES/designer/4/designer-name/page.html
到这里:
http://my.projects/mydomain.com/ANY_NUMBER_OF_CATEGORIES/page.html?designer=4

我想使用 mod-rewrite 来完成这个。

注意事项:

  1. “mydomain.com/”和“/designer”之间可以有任意数量的类别。
    1. 例如 url 可以是 http://my.project/mydomain.com/designer/4/designer-name/page.html 或者它可以是 http://my.project/mydomain.com /tops/shirts/small/designer/4/designer-name/page.html
  2. 可能在原始 url 中提供了一个查询字符串,需要在重写后的 url 中保留该查询字符串。
    1. 例如,提供的 url 可以是:http://my.project/mydomain.com/designer/4/designer-name/page.html?color=red&type=shirt
    2. 鉴于上面的 url,生成的 url 需要是:http://my.projects/mydomain.com/page.html?designer=4&color=red&type=shirt
    3. 查询字符串的顺序无关紧要。 'designer=4' 部分可以出现在查询字符串的其余部分之前或之后。

我是 .htaccess 的新手并重新编写,因此任何示例和/或解释都将不胜感激。非常感谢。

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    在你的 .htaccess 文件中试试这个:

    RewriteEngine on
    RewriteRule ^(.+/)?(\d+)/[^/]+/([^/]+\.html)$ $1$3?designer=$2 [L,QSA]
    

    【讨论】:

    【解决方案2】:

    我最终不得不创建两个单独的 RewriteRules:

    RewriteRule ^designer/([^/]+)/.*/([^/]+)\.html $2.html?designer=$1 [NC,L,QSA]
    RewriteRule (.*)/designer/([^/]+)/.*/([^/]+)\.html $1/$3.html?designer=$2 [NC,L,QSA]
    

    感谢 Gumbo 指出重写的 [QSA] 部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      • 2010-12-30
      • 1970-01-01
      相关资源
      最近更新 更多