在使用mod-rewrite和URL Scheme时遇到问题

时间:2013-06-05 07:16:00

标签: php .htaccess mod-rewrite sef

我正在尝试为我的网站提供最佳的URL方案,用于我正在编写的插件,并且正在遇到几个冲突和路障。

标准网址如下

1 http://<mysite>/forums/misc.php?mytip=show_list
2 http://<mysite>/forums/misc.php?mytip=show_rounds&id=8
3 http://<mysite>/forums/misc.php?mytip=sign_up&id=8
4 http://<mysite>/forums/misc.php?mytip=show_games&id=8&round_id=123
5 http://<mysite>/forums/misc.php?mytip=leaderboard&id=8
6 http://<mysite>/forums/misc.php?mytip=leaderboard_detail&id=8&user=2&round_id=123
7 http://<mysite>/forums/misc.php?mytip=show_games&id=8&round_id=123&saved=1

现在我想重写它们看起来像

http://<mysite>/tipping-comp/<title of tipping comp>_<id>/<mytip>/<round_name>_round_id

例如,这些看起来像

1 http://<mysite>/tipping-comp/show_list 
2 http://<mysite>/tipping-comp/dans-footy-tipping-2013_8/show_rounds/ 
3 http://<mysite>/tipping-comp/dans-footy-tipping-2013_8/sign-up/ 
4 http://<mysite>/tipping-comp/dans-footy-tipping-2013_8/show_games/round-1_184/
5 http://<mysite>/tipping-comp/dans-footy-tipping-2013_8/leaderboard/ 
6 http://<mysite>/tipping-comp/dans-footy-tipping-2013_8/leaderboard_detail/round-1_184/user-2
7 http://<mysite>/tipping-comp/dans-footy-tipping-2013_8/show_games/round-1_184/1

我使用下划线的唯一原因是因为我有更多的问题,我有上面的名字,如果它有一个数字,那么它有ID。我希望所有下划线或全部破折号。

对于我正在尝试做的事情,这是最好的URL方案吗?或者对于那些只是有类似斜线的东西,它会更好吗? HTTP:///斜倾竞争/ show_games / 8 / round_id /1分之184

我认为我使用的方案是关键词最丰富,而不会超过顶部,也让我的用户更容易记住。

我只是继续遇到404或错误,因为某些网址与其他网址发生冲突。

有人可以帮我写这些重写规则吗?

我得到的碰撞符合以下规则

 RewriteRule ^tipping-competition/([^/]*)/([^/]*)/([^/]*)\.html$ misc.php?id=$2&mytipper=$3 [L,QSA]

    #round_id added
    RewriteRule ^tipping-competition/([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ misc.php?id=$2&round_id=$3&mytipper=$4 [L,QSA]

这些互相打断

1 个答案:

答案 0 :(得分:0)

我的碰撞是由于其他代码造成的。我能够通过以下规则实现我的目标

#standard rewrite rule for getting the list of comps
RewriteRule ^tipping-competition\.html$ misc.php?mytipper=show_list [L,QSA]
#rule for showing selected comp rounds
RewriteRule ^tipping-competition/([^/]*)/([^/]*)/([^/]*)\.html$ misc.php?id=$2&mytipper=$3 [L,QSA]

#round_id added 
RewriteRule ^tipping-competition/([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ misc.php?id=$2&round_id=$3&mytipper=$4 [L,QSA]