1

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

这是我需要为其创建规则的 URL 站点:

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

上述 URL 是正确的,并且是其各自站点的根目录。

下面的重写规则将 URL 更改为

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

我想我可能需要两个规则来处理上述项目。但缺点是根目录URL不应该被重写,只有在最后一个单词后面有字符,即while/allied-health不会被重写,/allied-health-about才会被重写为/allied-health/allied-health-about。有道理?

这就是我所拥有的

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

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

4

1 回答 1

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,。

于 2013-11-04T19:53:42.783 回答