Mod重写所有分页的一般规则?

时间:2011-11-09 21:00:57

标签: .htaccess mod-rewrite pagination

可以这样做吗?无论在哪个页面或目录下显示page=$1,都会被重写/重定向到/$1

例如:

file.php / 1 file.php?page = 1

dir / file / 2 dir / file?page = 2

dir / file.php?name = something / 3 将是 dir / file.php?name = something& page = 3

这是我到目前为止所拥有的:

RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteCond %{QUERY_STRING} ^&page=([0-9-]+)/?$ 
RewriteRule ^(.+)\.php$ $1/%2 [R=301,L]
RewriteRule ^(.*)$ $1.php/$2

1 个答案:

答案 0 :(得分:1)

要涵盖以 / 123 结尾的URI路径,我们可以使用此规则:

RewriteRule ^(.+)/([0-9]+)$ /$1?page=$2 [QSA,L,R]

所以:

  • file.php / 1 file.php?page = 1
  • dir / file / 2 目录/文件?page = 2
  • 请注意,这还包括: dir / file / 3?foo = bar dir / file?page = 3& foo = bar

要涵盖在实际查询字符串末尾附加 / 123 ,我们可以使用此规则:

RewriteCond %{QUERY_STRING} (.*)/([0-9]+)$
RewriteRule ^(.+)$ /$1?%1&page=%2 [L]

所以:

  • dir / file.php?name = something / 3 dir / file.php?name = something& page = 3