0

次のようなすべての URL をリダイレクトしたい:

olivian.ro/[year between 1997 & 2050]/[month between 01 & 12]/anything-starting-with-an-alphanumeric

を除いて

olivian.ro/[year between 1997 & 2050]/page/whatever.

この条件は現在、物事をリダイレクトするのに適しています。

/(\d*)/(\d*)/(.*[0-9a-zA-Z]) 

問題は、第 3 巻に例外を追加することです。

では、正規表現を使用してこれに追加するにはどうすればよいですか。

(.*[0-9a-zA-Z]) 

これが「ページ」である場合を除くルール

olivian.ro/2012/09/my-article-about-scissorsにリダイレクトしたいolivian.ro/my-article-about-scissors

olivian.ro/2012/09/page/2しかし、私はリダイレクトしたくありませんolivian.ro/page/2

WordPress のリダイレクト プラグインを使用しています。これは、最初のルール セットを/$3.

4

1 に答える 1

0

.htaccess で、これを の前に追加しますRewriteRule

 RewriteCond %{REQUEST_URI} !/\d+/\d+/page/

PHP自体では、正規表現自体で否定的な先読みでそれを行うことができます:

#/(\d*)/(\d*)/(?!page)(.*[0-9a-z])#i

(.*[0-9a-z])これは、 「任意の文字 (.) を 1 回以上、その後 0-9 または az の 1 文字」([0-9a-z]*)([^/]+)意味することに注意してください。少なくとも 1 つ)。あなたの実際の説明(「英数字で始まるもの」)はもちろん([0-9a-zA-Z].*)

于 2013-06-12T13:58:05.567 に答える