【问题标题】:Php - allow space in rewriteRulePhp - 在 rewriteRule 中允许空间
【发布时间】:2014-06-13 09:23:11
【问题描述】:

嘿,现在我有这个重写(对于 seo):

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?id=$1

它可以工作,但只能使用这样的网址:

http://example.com/product/anyProduct

但是当url是这样的时候:

http://example.com/product/any Product

有一个空格,我得到 404 - 错误。

所以, 如何用“-”替换任何空格?

我试过了:

RewriteRule ^([a-zA-Z0-9_ -]+)$ index.php?id=$1

但这对我不起作用,知道吗?问候!

【问题讨论】:

  • 连字符 (-) 在字符类 ([]) 中具有特殊含义。你必须逃避它
  • 使用“/”转义它,如下所示:^([a-zA-Z0-9_ /-/]+)$ ?
  • 您必须阅读正则表达式手册。例如这里:php.net/manual/en/reference.pcre.pattern.syntax.php
  • 按照说明这样做:^([a-zA-Z0-9_ \-]+)$ => 不起作用,但为什么?
  • 你知道我只需要用“-”替换任何空格,这是正确的方法吗?

标签: php seo rewrite space rule


【解决方案1】:

尝试将+ 符号添加到正则表达式中,例如^([a-zA-Z0-9_ \-+]+)$

+ 是一个 urlencoded 空格。

UPD:尝试将每个符号的正则表达式更改为^(.+)$

【讨论】:

  • 你说为每个符号更改正则表达式是什么意思??
  • 对不起,我的英语不好。我的意思是,^(.+)$ 正则表达式从查询的开始到结束获取行,其中包含任何符号,而不仅仅是0-9A-Za-z_-。 Urlencoded 符号也将在那里,rewriterule 将与此一起使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2014-12-01
  • 2011-04-26
  • 2016-06-05
相关资源
最近更新 更多