1

URL の一部のセクションを取得するために正規表現を使用します。

この 2 つの URL があります。

http://site/post/post-link

http://site/post/post-link/

以下のコードを使用して、最初のpost-linkURL から取得できます。

RewriteRule ^post/(.*)$ index.php?title=$1 [L,QSA,NC]

しかし、上記のコードには/2 番目の URL に問題があり、正しく動作しません。

だから、私は気にする傾向があります、尋ねてください:

1.コードでその問題を解決するにはどうすればよいですか

2.私のコードよりも優れたコードを書くためのアイデアはありますか?

4

1 に答える 1

3

(.*)貪欲な一致として知られており、文字列の最後まですべてを一致させています$。その後、オプションで一致するものを追加します。(.*?) これはfrom からにキャプチャされません:/?/()$1

RewriteRule ^post/(.*?)/?$ index.php?title=$1 [L,QSA,NC]

0個以上の任意の文字に一致するため、ルールはその後にタイトルがなくても一致することに.*注意してください。それが起こらず、空のタイトルを . に送信してはならない場合は、 . の代わりに少なくとも 1文字を要求するために使用します。/post/index.php(.+?)(.*?)

さらに良いのは、([^/]+)which までのすべてに一致しますが、 next を含まないものを使用すること/です:

RewriteRule ^post/([^/]+)/?$ index.php?title=$1 [L,QSA,NC]
于 2013-03-23T20:50:46.990 に答える