【问题标题】:Apache2: Mod_rewrite wildcard text.htmlApache2:Mod_rewrite 通配符 text.html
【发布时间】:2012-07-16 17:04:13
【问题描述】:

我们改变了电子商务供应商,我需要坚持我们所做的一些 SEO。 我想为一组页面做一个 301 到一个新的 URL

我有一组以相同的tickets.htm 结尾的页面。因此,例如,我有一个像 /blank_tickets.htm 和 /concert_tickets.htm 这样的页面,并且列表还在继续。

所以我尝试了这个: RewriteRule ^/(.*)tickets.htm$ /t/tickets/types/standard

我尝试了这种无前导/无 $ 等的变体。

我确定我遗漏了一些简单的东西,但我的 Google-fu 没有返回相关示例。

谢谢!

【问题讨论】:

  • 您的 RewriteRule 似乎没有生成 301,而是为其他 URL 提供服务,ticket.htm URL 也是如此。另外,你的问题是什么?你的表情永远匹配不上?
  • 是的,我仍然收到 404 来删除页面,而不是被重定向到 /t/tickets/types/standard URL
  • 如果在指令末尾添加[R,L] 会发生什么? (当然,前面有一些空格。)
  • 是的,R 标志用于创建浏览器重定向,但 L 仅表示不再应用 RewriteRule,因此这不是问题。与 R 相同,因为他不会收到 404 错误,而是在没有 HTTP 重定向的情况下加载了正确的页面。

标签: regex mod-rewrite apache2


【解决方案1】:

你没有逃过这个点。采用 \。在 .htm 部分的正则表达式中。

编辑:也使用 [R=301] 标志,或简单地使用 [R] 来生成 HTTP 301 标头。

【讨论】:

  • 改为:RewriteRule ^(.*)tickets\.htm$ /t/tickets/types/standard [R] 结果相同
  • /t/tickets/types/standard 存在吗?它是下一个 RewriteRule 的主题吗?如果是,那么如果您在前面的规则中使用 [L] 标志,那么您的重写顺序可能会导致问题。抱歉,我刚刚意识到点不可能是问题,因为它匹配所有内容。
  • 还有一件事。我测试了这些确切的规则,它们正在我的 Apache 上工作。但是:你是不是也把RewriteEngine on放在了开头?因为如果你错过了,任何重写都行不通。
  • 这是我唯一的重写规则,我的配置文件顶部有 RewriteEngine... 它需要在 VirtualHost 部分吗?是的,目的地存在
  • 我有点困惑,因为你似乎做的一切都是正确的。 RewriteRules 可以按目录配置,它们不一定属于 VirtualHost 部分。尝试修改 RewriteBase 指令。我猜你 .htaccess 唯一遗漏的是 RewriteBase /,但根据你的 URL 结构,可以用其他东西代替 /
猜你喜欢
  • 2011-07-28
  • 2011-09-15
  • 2017-10-03
  • 2013-01-07
  • 1970-01-01
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
相关资源
最近更新 更多