1

私はこの正規表現に本当に苦労しています。

「グループ」機能の新しいバージョンを立ち上げていますが、同じ URL ですべての古いグループをサポートする必要があります。幸いなことに、これら 2 つの機能は URL パターンが異なるため、これは簡単でしょうか? 右?

  • 旧: domain.com/group/$groupname
  • 新規: domain.com/group/$groupid/$groupname

古いグループを古い​​スクリプトにリダイレクトするために正規表現で使用していた現在の正規表現は次のとおりです。 RewriteRule ^(group/([^0-9/].*))$ /old_group.php/$1 [L,QSA]

domain.com/group/2009-neato-groupのようなグループが現れるまではうまく機能していました。

その時点で、正規表現が一致し、新しいグループが古いコードに強制されました。これは、数字が含まれていたためです。おっと。

それで、リダイレクトできるように古いパターンに一致する正規表現について何か考えはありますか?

一致する必要があるパターン:

  • グループ/私の古いグループ
  • グループ/別の古いグループ/
  • group/123-another-old-group-456/a-module-inside-the-group/

一致できないパターン:

  • グループ/12/新しいグループ
  • グループ/345/別の新しいグループ/
  • group/6789/a-3rd-group/module-abc/

私が考えた最善の方法は、「group-slash-numbers-slash」で始めることはできませんが、それを正規表現に変換することはできませんでした. したがって、そのパターンを否定する何かがおそらく機能するでしょう。

ありがとう

4

2 に答える 2

0

逆に考えてみてください。URLが^group/ [0-9] + /。+と一致する場合、それは新しいグループなので、最初にこれらをリダイレクトします([L]ルールを使用)。他のすべては古いグループでなければなりません、あなたはそこにあなたの古いルールを保つことができます。

于 2009-07-18T00:35:12.127 に答える
0

設計上の選択により、純粋な htaccess ソリューションが難しくなります。これgroup/123-another-old-group-456/a-module-inside-the-group/は特に有効な古いスタイルの URL であるためです。

引数を見て、最初の部分が有効かどうかを判断し、有効なgroupid場合は新しいスタイルの URL でユーザーをそのグループに移動させるリダイレクタ スクリプトをお勧めします。それ以外の場合は、古いスタイルの URL であるため、 に渡してold_group.phpください。このようなもの:

RewriteRule ^group/(.*)$ /redirector.php/$1 [L,QSA]
于 2009-07-18T00:08:51.690 に答える