【问题标题】:Redirect and Rewrite URLs and Replace Space with Dash重定向和重写 URL 并用 Dash 替换空格
【发布时间】:2014-05-25 21:35:50
【问题描述】:

我想重写/重定向我网站上的 URL。以下是我想要完成的事情:

  1. 从 www.olddomain.com 重定向到 www.newdomain.com
  2. 重写 URL 并创建干净的 URL
  3. 创建干净的 URL 时忽略某些参数
  4. 用破折号替换空白空间 %20。

以下是我网站上的一些示例 URL,以及我想将它们重写/重定向到的内容:

www.olddomain.com/events/events.php?location=los%angeles www.newdomain.com/events/los-angeles

www.olddomain.com/nightclubs/nightclubs.php?location=los%angeles www.newdomain.com/nightclubs/los-angeles

www.olddomain.com/nightclubs/nightclubDetail.php?venueID=1234&userID=1346 www.newdomain.com/venue/1234

www.olddomain.com/nightclubs/nightclubs.php?cat_type=bars&location=los%angeles www.newdomain.com/nightclubs/bars/los-angeles

www.olddomain.com/events/events.php?location=los%angeles www.newdomain.com/events/los-angeles

www.olddomain.com/events/eventsDetail.php?eventID=1234&slid=5678&lid=5432 www.newdomain.com/events/1234

此外,已在 google 中编入索引的 URL 包含位置字符串,例如:?location=los%20angeles

这就是我的 XML 站点地图中的 URL 的编写方式。

如何让 google 将当前索引的 URL 替换为带有位置字符串的新 URL,例如:?location=los-angeles

【问题讨论】:

    标签: .htaccess mod-rewrite redirect url-rewriting clean-urls


    【解决方案1】:

    将这些添加到olddomain.com 的 htaccess 应该可以:

    RewriteEngine On
    RewriteCond %{THE_REQUEST} ^(GET|POST)\ /(.*)/(.*)\.php\?cat_type=(.*)&location=(.*)%(.*)\ HTTP
    RewriteRule ^ http://newdomain.com/%3/%4/%5-%6? [R=301,L]
    
    RewriteCond %{THE_REQUEST} ^(GET|POST)\ /(.*)/(.*)\.php\?venueID=(.*)&userID=(.*)\ HTTP
    RewriteRule ^ http://newdomain.com/venue/%4? [R=301,L]
    
    RewriteCond %{THE_REQUEST} ^(GET|POST)\ /(.*)/(.*)\.php\?location=(.*)%(.*)\ HTTP
    RewriteRule ^ http://newdomain.com/%3/%4-%5? [R=301,L]
    
    RewriteCond %{THE_REQUEST} ^(GET|POST)\ /(.*)/(.*)\.php\?eventID=(.*)&slid=(.*)&lid=(.*)\ HTTP
    RewriteRule ^ http://newdomain.com/%2/%4? [R=301,L]
    

    【讨论】:

    • 感谢您的回答。我是否还必须为整个网站添加 301 重定向?例如: RewriteCond %{HTTP_HOST} ^www.olddomain.com [NC] RewriteRule ^(.*)$ newdomain.com/$1 [L,R=301] 。这会影响你给出的其他规则吗?
    • 你可以在其他人之后添加那个。
    • 好的,我是否还必须为每个不同的页面 URL 创建单独的规则?因为我只给了你一些我网站上的 URL 示例。还有一些其他的变化。每个变体都应该有一个规则吗?
    • 如果你想要漂亮的 url,那么可以,如果你对 url 没问题,那么不,你不要。
    • 当我使用您提供的规则时,它会正确重写 URL,但随后会出现 404 错误。例如 domain.com/events/events.php 将被重写为 domain.com/events 但它给出了 404 错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    相关资源
    最近更新 更多