【问题标题】:How can I write a regex to match everything but a char?我如何编写一个正则表达式来匹配除字符之外的所有内容?
【发布时间】:2012-07-11 18:09:06
【问题描述】:

我已经从这样的网址切换到我的 wordpress 博客:

/blog/2012/01/01/how-to-build-a-website

这样的短网址

/blog/?p=123

Wordpress 有一个像这样工作的搜索引擎

/blog/search/?s=how to build a website

然后搜索s 参数。

我正在尝试使用 .htaccess Redirectmatch 将所有旧网址重定向到搜索网址,帖子标题为 s 参数。

所以如果用户奴役到

/blog/2012/01/01/how-to-build-a-website

应该重定向到

/blog/search/?s=how to build a website

我已经编码了

Redirectmatch blog/\d+/\d+/\d+/(.+) http://www.mysite.com/blog/?s=$1

但是这个正则表达式在其中的 - 符号内的最后一个 / 之后捕获整个字符串。

这样,如果一个用户奴役到

/blog/2012/01/01/how-to-build-a-website

将被重定向到

/blog/search/?s=how-to-build-a-website

虽然我希望用户重定向到

/blog/search/?s=how to build a website

如何编写正则表达式来做到这一点?

编辑: 是的,伙计们,我知道这种网址很难看 :) 但我只是知道该怎么做,因为在这背后有一些我正在尝试解决的技术问题..

【问题讨论】:

  • 为什么要从漂亮的 URL 切换到丑陋的 URL?为什么?
  • 我可以推荐插件smart 404,它应该可以在不使用.htacess的情况下解决这个问题
  • 同上@AnthonyMills 的要求。长 URL 是 Wordpress 的优势之一。你会得到很棒的搜索引擎优化。像您一样选择较短的网址是确保人们无法通过 Google 搜索您的帖子的好方法。
  • 你读过search and replace in apache htaccess a rewriterule,并为安东尼和多格威瑟+1

标签: regex apache .htaccess redirect


【解决方案1】:

请不要这样做。我知道使用短 URL 似乎很诱人。毕竟,你会得到 TinyURL 之类的东西。 /blog/?p=123 不是比/blog/2012/01/01/how-to-build-a-website 更好吗?

没有。不是。

原因是当有人发布指向您博客文章的链接时,较长的 URL 意味着什么。它告诉人们文章的年龄。它给出了标题。它可以帮助人们找到您的文章;毕竟,在为您的网站编制索引时,Google 会给予 URL 很大的权重。

过去是为计算机构建的 URL。像/blog/?p=123 这样的东西非常适合电脑;它易于解析,不需要任何额外的数据库查找。您可以写两篇名为“如何建立网站”的文章,并且博客引擎不必确保在第二篇文章中添加-2。它可以轻松映射到服务器上文件的实际结构,而无需在 URL 中构建结构。

但我们已经意识到,URL 也可以为人类构建。 URL /blog/2012/01/01/how-to-build-a-website 具有人类易于理解的形式。当然,键入的时间要长一些,但是您键入的所有位都更容易,并且大多数 URL 无论如何都是复制粘贴或单击。当然,这对计算机来说需要更多的工作,但这是值得的。 它使互联网更友好。

所以我很抱歉,但我不会帮助你。 :)

【讨论】:

  • 是的,伙计们,我知道这种网址很难看 :) 但我只是知道该怎么做,因为这背后有一些我正在努力解决的技术问题..跨度>
  • 无论如何,我同意你所说的一切
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2019-02-15
相关资源
最近更新 更多