我正在制作我网站的照片部分,在选择要查看的图片时,您可以使用不同的导航菜单来获取您想要的内容(最新,趋势,朋友,收藏等),还可以对其进行排序图片按日期,评级,观点等。
哦,还有一个分页系统,我用它只在一页上显示几张图片。
现在我有了这个:
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文件。这将非常有用,因为我还有一篇文章,视频和论坛部分,它们具有相同的功能。
答案 0 :(得分: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
标志,因此当查询字符串放在一起时,可以根据需要附加新位。另一件事是常规路由部分,我将/?
添加到正则表达式匹配的末尾,因为猜到页面/排序处理,你最终可能会得到尾部斜杠。