1

そのため、URL 文字列の要求を受け取り、それを に書き換える書き換えルールを用意してい/site-aboutpageます/site/site-aboutpage。それはうまくいきます!しかし、1 つまたは 2 つのハイフンを含む URL 文字列があり、それらを処理する方法がわかりません。/site-name/aboutpageorはor/site-name/about-pageに書き換える必要があります/site-name/site-name-aboutpage/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

上記の項目については、おそらく 2 つのルールが必要になると思います。ただし、要するに、ルート ディレクトリの 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]

最初の 3 つのルールは条件付きであるため、最後の行の書き換えルールがそれらに干渉しません。

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]

これは、^([^/].+)\-([^/].+)/?$一致します:

/1 回以上のを除く任意の文字 , 1 回以上の回-を除く任意の文字(オプション), .//end

于 2013-11-04T19:53:42.783 に答える