所以我有一个重写规则,它接受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
前三条规则是条件,因此最后一行的重写规则不会干扰它们。
答案 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}}。