【问题标题】:Only one part of url needs to be 301 redirected只有一部分url需要301重定向
【发布时间】:2014-10-02 07:54:42
【问题描述】:

我需要重定向网站中的一堆或 URL。

我有 http://www.myurl.lt/lt/imone/landstar-lt-lt/?cms_action=manage 我需要重定向到http://www.myurl.lt/lt/imone/landstar-lt-lt/

我有大约 700 个,那么是否可以使用一个重定向命令进行重定向?

【问题讨论】:

  • 这些网址有什么共同点?
  • 你的问题不是很清楚。你想要一个 apache mod_rewrite 规则吗?你想删除所有获取参数还是只删除cms_action?到目前为止你尝试过什么?
  • 我想使用 mod_rewrite。我只想删除 cms_action。目前我还没有尝试做任何事情,这是一个新网站。这两个 URL 具有相同的内容,并且在两个 URL 上都被编入索引。就像我之前写的那样,我想摆脱 cms_action。 /?cms_action 之前的 URL 可以不同
  • /it//it/imone/ 是真实目录吗?
  • Anubhava,是的,他们是

标签: php .htaccess url redirect partial


【解决方案1】:

此规则应删除 cms_action 参数,但保留所有其他参数

RewriteCond %{QUERY_STRING} ^(.+?&|)cms_action=[^&]*(?:&(.*)|)$ [NC]
RewriteRule ^ %{REQUEST_URI}?%1%2 [R=301,L]

【讨论】:

    【解决方案2】:

    将此规则放在/it/imone/.htaccess 文件中:

    RewriteEngine On
    RewriteBase /it/imone/
    
    RewriteCond %{THE_REQUEST} /([^?]*)\?cms_action=manage [NC]
    RewriteRule ^ %1/? [R=301,L]
    
    RewriteCond %{QUERY_STRING} !(^|&)cms_action=manage(&|$) [NC]
    RewriteRule ^ %{REQUEST_URI}?cms_action=manage [L,QSA]
    

    【讨论】:

      【解决方案3】:

      不要使用重写,在这种情况下对我来说没有任何意义,为什么不直接从管理操作重定向用户?这肯定会增加清晰度。例如,如果您使用的是 PHP:

      // Inside manage action
      header('Location: http://www.myurl.lt/lt/imone/landstar-lt-lt/');
      

      【讨论】:

      • 这是CMS的问题,所以它创建了两个URL。如果您听说过,它被称为印象页面。它有很多问题,程序员跑了,所以现在我需要使用我拥有的东西,所以重定向是目前唯一的解决方案。
      • 而不是重写为什么你不重定向我向你展示的方式?通过发送标头?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 2014-01-12
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多