0

私は自分の URL をフレンドリーな URL に変換する過程にあり、それらのいくつかで少し苦労しています。

たとえば、投稿とカテゴリ、

投稿 (詳細):

/post/the-title/10 /* /post.php?id=10 */

投稿 (一覧)

/posts/  /* /posts.php?what=last */
/posts/?what=top /* /posts.php?what=top */
...

しかし、URLの構造を維持するために、カテゴリを実装する方法がよくわかりません。次のことを達成したいと思います。

/posts/category-name/5 /* /posts.php?what=cat&id=5 */

しかし、これは私が自分のURLを書き換える方法です(リスト用):

RewriteRule ^posts/$ posts.php?$1&friendly=1 [QSA]

したがって、他のものがトリガーされないように、次のように前に追加する必要があると思います。

RewriteRule ^posts/(.+)/(.+) posts.php?what=cat&id=$2&friendly=1
RewriteRule ^posts/$ posts.php?$1&friendly=1 [QSA]

したがって、ここでの質問は次のとおりです。

1) それは (近い) 道のりですか? (URL タイプが変更されることを期待して)
2) RewriteRule を他のルールよりも前に確立すると、ループに陥らないことが保証されますか?

任意の入力を歓迎します。URL 構造にコミットする前に、これを熟考したいと思います。

4

1 に答える 1

1

「/post/the-title/10 /* /post.php?id=10 */」の場合

RewriteRule ^post/[^/]+/([0-9]+)/?$ /post.php?id=$1&friendly=1 [L,QSA]

「/posts/ /* /posts.php?what=last */」の場合

RewriteCond %{QUERY_STRING} !^what=
RewriteRule ^posts/?$ posts.php?what=last&friendly=1 [L,QSA]

「/posts/?what=top /* /posts.php?what=top */」の場合

RewriteCond %{QUERY_STRING} ^what=
RewriteRule ^posts/?$ posts.php?friendly=1 [L,QSA]

「/posts/カテゴリー名/5 /* /posts.php?what=cat&id=5 */」の場合

RewriteRule ^posts/[^/]+/([0-9]+)/?$ /posts.php?what=cat&id=$1&friendly=1 [L,QSA]
于 2013-10-14T19:37:15.247 に答える