【问题标题】:.htaccess redirect from GET variable to url string.htaccess 从 GET 变量重定向到 url 字符串
【发布时间】:2011-04-02 03:46:10
【问题描述】:

我需要重定向

/search?keywords=somesearchterm

/search/somesearchterm

这似乎非常基本,但我已经用头敲了一个小时。

感谢您抽出宝贵时间查看此内容。

【问题讨论】:

    标签: .htaccess mod-rewrite query-string


    【解决方案1】:

    您不能匹配 RewriteRule 指令中的 aginst 查询字符串。使用 %{THE_REQUEST} 或 %{QUERY_STRING} 服务器变量来匹配查询字符串:

    以下规则适用于此重定向

     RewriteEngine On
     RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/search\?kewords=([^&\s]+) [NC]
     RewriteRule ^ /search/%1? [NE,NC,R,L]
    
    RewriteRule ^search/([^/]+)/?$ /search?keyword=$1 [QSA,NC,L]
    

    【讨论】:

      【解决方案2】:

      您想使用 mod_rewrite 实现所谓的“301 重定向”。

      RewriteEngine ON
      RewriteRule ^/search\?keywords=somesearchterm$ /search/somesearchterm
      

      添加正则表达式:

      RewriteEngine ON
      RewriteRule ^/search\?keywords=(.+) /search/$1 [R=301,L]
      

      R=301 表示提供 301 Header 重定向,以便用户的 URL 在浏览器中更改,L 表示如果匹配,则不再处理任何重写规则。


      如果你想反其道而行之——换句话说,如果有人访问mysite.com/search/asearchterm,并且你希望 URL 保持不变,但“在幕后”你希望它加载某个服务器脚本,请执行这个:

      RewriteEngine ON
      RewriteRule ^/search/(.+) /search.php\?keywords=$1 [L]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-21
        • 1970-01-01
        • 2010-10-26
        • 1970-01-01
        • 2020-12-10
        • 2022-03-24
        相关资源
        最近更新 更多