重写使用一个或多个连字符处理URL字符串的规则

时间:2013-11-04 19:27:21

标签: regex .htaccess url-rewriting

所以我有一个重写规则,它接受URL字符串/site-aboutpage的请求并将其重写为/site/site-aboutpage。这很好用!但是,我有一个或两个连字符的URL字符串,我不知道如何处理这些。应将/site-name/aboutpage/site-name/about-page重写为/site-name/site-name-aboutpage/site-name/site-name-about-page

这是我需要为以下内容创建规则的网址:

/biomedical-sciences 
/allied-health
/body-donation-program

以上网址是正确的,是各自网站的根。

下面的重写规则会将网址更改为

/allied/allied-health
/biomedical/biomedical-sciences
/body/body-donation

我想我上面的项目可能需要两个规则。但缺点是根目录网址不应该被重写,只有在最后一个单词后面有字符,即/allied-health不会被重写时{{1}将被重写为/allied-health-about。这有道理吗?

这是我拥有的

/allied-health/allied-health-about

前三条规则是条件,因此最后一行的重写规则不会干扰它们。

1 个答案:

答案 0 :(得分:0)

我认为它适合你:

RewriteCond %{REQUEST_URI} !^/body-donation\-program
RewriteCond %{REQUEST_URI} !^/allied\-health
RewriteCond %{REQUEST_URI} !^/biomedical\-sciences
RewriteRule ^([^/].*)\-([^/].*)/?$ /$1/$1\-$2/ [L,R=301]

这个,^([^/].+)\-([^/].+)/?$将匹配:

/-之外的任何字符,/,除/以外的任何字符一次或多次,end(可选),{{1}}。