0

異なるファイルを指す 2 つの書き換えルールを作成しようとしています。ただし、何らかの形で同じ PHP ファイルを指しています。

誰か見てくれませんか?


RewriteRule ^destinations/([a-z]+)-(.*)$ /a.php?x=$1&y=$2 [NC]

これはにリンクする必要がありますwww.example.com/destination/us-united-state


RewriteRule ^destinations/([a-z]+)-(.+)-(.+)$ /b.php?a=$1&b=$2&c=$3 [NC]

これはにリンクする必要がありますwww.example.com/destination/us-united-state-california

4

2 に答える 2

0

usunited-stateと の間united-stateには別の区切り文字を使用してくださいcalifornia。の 3 つの別個の単語www.example.com/destination/us-united-stateが実際に 2 つまたは 3 つの「もの」であるかどうかを検出する方法はありません。代わりにスラッシュを区切り文字として使用することをお勧めします: www.example.com/destination/us/united-stateand www.example.com/destination/us/united-state/california.

あなたのルールは次のようになります。

RewriteRule ^destinations/([a-z]+)/([^/]+)/?$ /a.php?x=$1&y=$2 [NC]
RewriteRule ^destinations/([a-z]+)/([^/]+)/([^/]+)/?$ /b.php?a=$1&b=$2&c=$3 [NC]

これは[^/]+/文字以外のものに一致する を使用します。これにより、キャプチャ グループが一致するus/united-states必要がある場所などに一致することを防ぎusます。このコンピューターではテストできないため、このコードはテストされていないことに注意してください。

于 2013-08-09T06:11:05.347 に答える
0

正規表現は、可能な限り長い一致を見つけます。そのため、([a-z]+)-(.*)$1 つ以上の a から z までの文字の後にダッシュが続き、その後に ANYTHING が続くものと一致します。

([a-z]+)-(.+)-(.+)には 2 つのダッシュが必要ですが、上記の式はこれらにも一致します。

正しい数のダッシュが一致していることを確認してください。

RewriteRule ^destinations/([a-z]+)-([^-]+)$ /a.php?x=$1&y=$2 [NC]

ページの名前を

www.example.com/destination/us-unitedstate

それから

RewriteRule ^destinations/([a-z]+)-([^-]+)-([^-]+)$ /b.php?a=$1&b=$2&c=$3 [NC]

次のようなページに一致する

www.example.com/destination/us-unitedstate-california
于 2013-08-09T06:20:06.230 に答える