我正在使用apache,我需要重写类型为的URL:
/ A / B / C / d /边界/东西*
为:
/边界/为a_b_c_d /东西*
我需要将第一个Uri重写为第二种格式。
'/ boundary'之前的元素数量是可变的,我想用'_'替换元素之间的所有斜杠('/')
边界词总是一样的。
我相信我需要制定两个规则,一个用于斜线替换,另一个用于将边界更改为URL的开头:
我认为第二条规则是 ^ /(。*?)/ \ bboundary \ b 到 / boundary / $ 1
是否有可能实现我想要的目标?!
如何?!
谢谢。
修改
我希望匹配到第一个边界词, 可以有一个像
这样的网址/ A / B / C / d /边界/边界
修改
Gumbo感谢您的帮助
根据您的重写规则,我设法创建了一个。
答案 0 :(得分:3)
请尝试以下规则:
RewriteRule ^/([^/]+)/(.+)/boundary/([^/]+)$ /$1_$2/boundary/$3 [N]
RewriteRule ^/([^/]+)/boundary/([^/]+)$ /boundary/$1/$2 [L]
小心使用 N 标志的第一个规则会导致内部重写而不增加内部计数器。所以很有可能你有无限的递归。
修改在您更改问题之后:
RewriteCond $1 !=boundary
RewriteCond $2 !=boundary
RewriteRule ^/([^/]+)/([^/]+)(/.*)?$ /$1_$2$3 [N]
RewriteRule ^/([^/]+)/boundary(/.*)$ /boundary/$1$2 [L]