【问题标题】:.htaccess RewriteRule change underscore to dash.htaccess RewriteRule 将下划线更改为破折号
【发布时间】:2013-10-20 16:42:19
【问题描述】:

我的 .htaccess 文件中现在有一个重写规则:

RewriteRule ^item/?([a-zA-Z0-9_]+)?/?([a-zA-Z0-9_]+)?/?$ static/items.php?a=$1&b=$2 [NC,L]

它将选择任何带有下划线的项目:

item/new_item/new_order

但是,我需要将下划线改为破折号:

item/new-item/new-order

如果我只是对 RewriteRule 字符串进行更改,它会破坏它。不知道如何解决。

RewriteRule ^item/?([a-zA-Z0-9-]+)?/?([a-zA-Z0-9-]+)?/?$ static/items.php?a=$1&b=$2 [NC,L]

【问题讨论】:

  • 我假设您不想要从item/new_item/new_orderitem/new-item/new-order 的规则,而是与后者匹配的规则?你问题中的措辞让我很困惑。
  • 是的,我想把它改成“-”。目前是“_”。

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

这是相当棘手的事情,但可以使用以下Rewrite 规则来完成:

RewriteEngine On

# first replace each _ by - recursively
RewriteRule ^(item)/([^_]*)_(.*)$ /$1/$2-$3 [L,NC]

# now usual stuff to forward request to static/item.php
RewriteRule ^(item)/([^_/]*)/?([^_/]*)/?$ static/$1.php?a=$2&b=$3 [L,QSA,NC]

【讨论】:

  • 这看起来很有趣,但这不会改变我之前的方法,即 $1 和 $2 是可选的吗?我需要在当前字符串中更改的是单词连接的 wat,从下划线到破折号。
  • 你想让$1$2都可选吗?
  • 做了一些小的编辑,它应该可以通过同时制作$1 and $2 optional
猜你喜欢
  • 1970-01-01
  • 2015-11-29
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
相关资源
最近更新 更多