【问题标题】:Rewrite URL with "-"用“-”重写 URL
【发布时间】:2020-07-31 21:37:30
【问题描述】:

大家好,我的 .htaccess 文件中有以下重写规则:

RewriteRule ^blog/(\w+)/?$ /blogitem.php?bseo=$1

它适用于大多数 URL,但是当我尝试使用“-”时找不到 URL,会引发网络服务器错误。

我已经测试过了,如果我遵循重写规则,它的工作原理就像

https://ikeen.com/blogitem.php?bseo=nokia-3310

但是一旦我尝试使用重写来访问它

https://ikeen.com/blog/nokia-3310

上面写着 404,有什么想法可以去哪里看?

问题是我正在尝试从俄语音译 URL,使用“-”作为俄语软符号和硬符号的替代。

【问题讨论】:

  • 如果您不知道\w 实际涵盖的内容,那么regex101.com 可以为您解释。
  • 我知道,但不是专家,我可以看到 _ 有效而 - 无效。任何想法如何实际解决它?正则表达式是如此复杂
  • \w 放入一个字符类中,并将- 添加到该类中……
  • 很抱歉,这听起来很难理解。您能否根据我提供的内容向我展示重写字符串的示例。我认为我不明白如何在手动填充的 .htaccess 中使用正则表达式中的类。

标签: php apache .htaccess url-rewriting


【解决方案1】:

\w 匹配任何字母、数字或下划线,但不包括 -。所以你必须添加它:

RewriteRule ^blog\/([\w-]+)\/?$ /blogitem.php?bseo=$1

请记住,例如 -nokia 甚至 - 也会匹配,请参阅 https://regex101.com/r/g5Tgba/1

【讨论】:

  • 感谢您提供问题的答案。听起来不太复杂:)
猜你喜欢
  • 2012-03-07
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 2012-01-16
  • 2010-11-11
  • 2015-03-15
相关资源
最近更新 更多