代码之家  ›  专栏  ›  技术社区  ›  theGoose

.htaccess重定向与另一个我无法删除的htaccess规则冲突

  •  1
  • theGoose  · 技术社区  · 14 年前

    信息:

    所以我对.htaccess还比较陌生,并且正在阅读。

    基本上我想这样做,重定向URL www.example.com/center-pro www.example.com/pro-hq (在这里找到了 .htaccess URL redirect )

    但是,我所工作的站点已经有了一个.htaccess文件。

    这就是我要做的:

    Options +FollowSymLinks  #already in htaccess file
    RewriteEngine On         #already in htaccess file
    
    Redirect 301 /center-pro http://www.example.com/pro-hq    #line I added
    
    
    RewriteCond %{REQUEST_FILENAME} !-f   #already in htaccess file
    RewriteCond %{REQUEST_FILENAME} !-d   #already in htaccess file
    RewriteRule ^(.*) index.php?idstring=$1&%{QUERY_STRING}   #already in htaccess file
    

    最后一行似乎干扰了我的重定向

    因此,我的重定向输出如下所示: www.example.com/pro-hq?idString=中心专业版

    问题:

    是否有任何方法可以使用上面的重定向规则并保持当前的.htaccees,这样我就不会弄乱当前的网站设置。

    **注意:做一个重写器是可行的,但我想使用重定向,这样人们就不会共享错误的URL。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Tim Stone    14 年前

    你可以使用 mod_rewrite 对于外部重定向:

    RewriteRule ^center-pro$ http://www.example.com/pro-hq [R=301,L]
    

    这可能是最简单的解决方案,取代了当前的 Redirect . 问题是 MODY重写 以前做过工作 mod_alias 当重写的URI路径没有传递时,修改后的查询字符串很遗憾是。你也可以调整你的 RewriteRule 阻止它处理您要处理的路径 莫代利亚斯 但我更喜欢第一种选择:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond ${REQUEST_URI} !^/center-pro
    RewriteRule ^(.*) index.php?idstring=$1&%{QUERY_STRING}
    

    此外,对于您当前的 改写词 ,您只需使用 QSA 标记而不是将查询字符串手动附加到URL:

    RewriteRule ^(.*) index.php?idstring=$1 [QSA]