友好的网址和保持层次结构

时间:2013-10-14 19:19:50

标签: php .htaccess mod-rewrite hierarchy friendly-url

我正在将我的网址转换为友好的网址,而我正在与其中一些网站进行一些努力,

例如,让我们说帖子和类别,

发布(详情):

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

帖子(列表)

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

但是我不确定如何实现类别,为了保持网址的结构,我想说明一下:

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

但这就是我重新编写我的网址(列表)的方式:

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)这是一种方式(近)去吗? (期望网址类型会改变)
2)是否会在另一个之前建立RewriteRule,以确保它不会在循环中结束?

欢迎任何输入,我想在提交到url结构之前考虑一下

1 个答案:

答案 0 :(得分: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 / category-name / 5 / * /posts.php?what=cat&id=5 * /”

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