2

WebサイトのインデックスページのRewriteRuleを実行しました。

以下のコードは次のとおりです。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/?$ /index.php?origin=$1
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/([a-zA-Z0-9+\-]+)/?$ /index.php?origin=$1&gender=$2
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/([a-zA-Z0-9+\-]+)/([a-zA-Z0-9+\-]+)/?$ /index.php?origin=$1&gender=$2&type=$3
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/([a-zA-Z0-9+\-]+)/([a-zA-Z0-9+\-]+)/([a-zA-Z0-9+\-]+)/?$ /index.php?origin=$1&gender=$2&type=$3&page=$4
</IfModule>

URLは次のようになります

http://babynames.agurchand.com/scottish/male/pythagorean

これは単一ページのWebサイトであるため、これまでのところすべてが正常に機能しています。それから私は私のウェブサイトにもう1つのページを追加したいと思いました、そして私も追加しました。ファイル名は「namemeaning.php」です。

下部に貼り付けたhtaccessに加えて、以下のコードを追加しました。しかし、それは機能していないようです。

RewriteRule ^/namemeaning/([a-zA-Z0-9+\-\(\)]+)/?$ /namemeaning/namemeaning.php?name=$1

以下のURLで試してみましたが、まだインデックスページのみを参照しています。

http://babynames.agurchand.com/namemeaning/abasi

誰かが私にこれに対する解決策を教えてもらえますか?

4

2 に答える 2

1

インデックスページの正規表現がリクエストに適合しているため、インデックスページに転送されています。index.php?origin = namemeaning&gender=abasiに送信されます

http://babynames.agurchand.com/namemeaning/abasi
'namemeaning' fits the rule ([a-zA-Z0-9+\-\(\)]+)
'abasi' fits the rule ([a-zA-Z0-9+\-]+)

簡単な修正は、行を追加することです

RewriteRule ^/namemeaning/([a-zA-Z0-9+\-\(\)]+)/?$ /namemeaning/namemeaning.php?name=$1

境界線より上

RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/?$ /index.php?origin=$1

最も具体的なRewriteRuleを、より一般的なものの上に常に配置することを忘れないでください。

正規表現の詳細については、このWebサイトでアドバイスできます。

于 2012-08-12T09:23:29.447 に答える
0

rewruiteルールは上から下に順番にチェックされ、一致したすべてのルールがこの順序で適用されます。目的のルールの前に、どのルールも一致しないことを再確認してください。その目的に適したツールはhttp://www.regextester.com/です。

于 2012-08-12T09:25:06.617 に答える