2012-07-23 60 views
2

我正在处理我的网站的照片部分,当选择要查看的图片时,您有不同的导航菜单以获取您想要的内容(最新,趋势,朋友,喜爱等)也是按照日期,评分,浏览等对图片进行排序的可能性。HTACCESS:如何简化我的RewriteRule

哦,并且还有一个分页系统,我用它只在一页上显示几张图片。

现在我有这样的:

RewriteRule ^photo$ photo.php?tab=latest 
RewriteRule ^photo/trending$ photo.php?tab=trending 
RewriteRule ^photo/friends$ photo.php?tab=friends 
RewriteRule ^photo/favorite$ photo.php?tab=favorite 

RewriteRule ^photo/page:([0-9]+)/$ photo.php?tab=latest&page=$1 
RewriteRule ^photo/trending/page:([0-9]+)/$ photo.php?tab=trending&page=$1 
RewriteRule ^photo/friends/page:([0-9]+)/$ photo.php?tab=friends&page=$1 
RewriteRule ^photo/favorite/page:([0-9]+)/$ photo.php?tab=favorite&page=$1 

RewriteRule ^photo/sort:([A-Za-z0-9]+)/page:([0-9]+)/$ photo.php?tab=latest&page=$2&sort=$1 
RewriteRule ^photo/trending/sort:([A-Za-z0-9]+)/page:([0-9]+)/$ photo.php?tab=trending&page=$2&sort=$1 

And so on 

我想知道它有某种可能性有.htaccess文件检测到任何page:([0-9]+),并自动与页面号码发送一个变量到PHP文件。这将非常有帮助,因为我也有一个文章,视频和论坛部分,它们将具有相同的功能。

+3

我认为更好的解决方案是使用前端控制器模式,将所有照片/ URL重定向到photo.php,并让photo.php使用某种路由器([无耻插头](http://brandonwamboldt.ca) /我的PHP路由器级-825 /))。它会更干净,更易维护,更具可扩展性。 – 2012-07-23 13:42:14

+0

好的,谢谢,我要去看看。 – 2012-07-23 13:59:00

+0

所以我正在尝试你链接的PHP类路由器,但我没有找到如何使用它。关于如何使用它没有很多文档。你能告诉我一个我如何用于我的案例的例子吗?而且你认为用这个类替换我所有的.htaccess RewriteRule是个好主意吗? – 2012-07-23 15:02:01

回答

1

尝试用这种替代:

# Extract out the "page" and "sort" parts of the URI, and append them to the query string 
RewriteRule (.*)/page:([0-9]+)/(.*) /$1/$3?page=$2 [L,QSA] 
RewriteRule (.*)/sort:([A-Za-z0-9]+)/(.*) /$1/$3?sort=$2 [L,QSA] 

# Proceed with the regular routing 
RewriteRule ^photo/?$ photo.php?tab=latest [L,QSA] 
RewriteRule ^photo/trending/?$ photo.php?tab=trending [L,QSA] 
RewriteRule ^photo/friends/?$ photo.php?tab=friends [L,QSA] 
RewriteRule ^photo/favorite/?$ photo.php?tab=favorite [L,QSA] 

这里的关键是到处使用的QSA标志,所以作为查询字符串被放在一起,新的位可根据需要追加。另一件事是常规路由部分,我将/?添加到正则表达式匹配的末尾,因为gue指向页面/排序处理,您可能会以尾部斜杠结束。