【问题标题】:htaccess rewrite slug in a urlhtaccess 在 url 中重写 slug
【发布时间】:2015-05-21 13:55:09
【问题描述】:

我已经搜索并搜索了有关重写规则的帮助,但似乎没有什么与我正在尝试做的具体匹配,希望有人可以提供帮助?

我正在尝试替换 url 中的一个 slug,它之前和之后可能有各种其他可能的 slug。

例如

http://www.example.com/slug/old_slug

http://www.example.com/slug/new_slug

/slug/old_slug/slug

/slug/new_slug/slug

/slug/old_slug/slug/slug

/slug/new_slug/slug/slug

或者最后:

/slug/old_slug/slug?param=1&param=2

/slug/new_slug/slug?param=1&param=2

如果这听起来令人困惑,这些产品属于类别中的产品,其后有各种可能的 url 参数,我不得不重命名产品,这意味着我想为 SEO 和入站链接重写旧 url。

【问题讨论】:

  • /slug 是静态文本还是一些动态值?
  • 动态的,所以它可能是 /dishwasher/ 或 /microwave/ 等

标签: apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

您可以在DOCUMENT_ROOT/.htaccess 文件中使用此代码:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/old_slug(/.*)?$ /$1/new_slug$2 [L,NE,R=302]

【讨论】:

  • 非常感谢。一位朋友也建议这样做,这似乎也能解决问题.... rewriterule ^(.*)old_slug(.*)$ /$1new_slug$2 [L,R=301,QSA]
  • 不要使用我上面建议的规则,因为该规则也将匹配/slug/bold_slugs/,而我上面的答案不会是这种情况。
猜你喜欢
  • 2015-07-28
  • 2013-09-04
  • 2011-11-20
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 2013-08-01
相关资源
最近更新 更多