【问题标题】:How to do a htaccess rewrite with a question mark ? in the original url如何用问号进行 htaccess 重写?在原始网址中
【发布时间】:2010-05-27 23:36:28
【问题描述】:

我必须重定向一个包含问号的 URL,我只是想不出正确的 .htaccess 代码来实现它。

示例: 重定向 301 /home.php?cat=16 http://www.example.com/furniture.html

我认为我需要重写条件,但我不是 htaccess 专家。

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    使用Redirect directive from mod_alias,您只能检查URI path 而不能检查查询(适用于所有directives of mod_alias)。如果要检查 URI 查询,您需要使用 mod_rewrite:

    RewriteEngine on
    RewriteCond %{QUERY_STRING} ^cat=16$
    RewriteRule ^home\.php$ http://www.example.com/furniture.html? [L,R=301]
    

    替换中的空查询将阻止将原始查询附加到新 URI。

    【讨论】:

      【解决方案2】:

      来自apache2 mod_rewrite docs

      匹配的是什么?

      Pattern 最初会被匹配 针对 URL 之后的部分 主机名和端口,以及在 请求参数。如果你想匹配 针对主机名、端口或查询 字符串,使用 RewriteCond%{HTTP_HOST}%{SERVER_PORT}%{QUERY_STRING} 变量 分别。

      【讨论】:

        【解决方案3】:

        对于更复杂的参数(如 site.com/index.php?blaa=1&id=33

        <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{QUERY_STRING} blaa=1&id=33
        RewriteRule ^(.*)$ http://www.site.com/yourpage.html? [R=301,L]
        </IfModule>
        

        【讨论】:

          猜你喜欢
          • 2013-02-09
          • 1970-01-01
          • 2011-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-23
          • 2013-03-21
          • 1970-01-01
          相关资源
          最近更新 更多