Мод Переписать общее правило для всех страниц? - PullRequest
0 голосов
/ 10 ноября 2011

Может ли что-то подобное быть сделано?Независимо от того, какая страница или каталог page=$1 находится под ним, он будет переписан / перенаправлен на /$1

Например:

file.php / 1 будет file.php? Page = 1

dir / file / 2 будет dir / file? Page = 2

dir / file.php? Name = что-то / 3 будет dir / file.php? Name = что-то & 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 Ответ

1 голос
/ 10 ноября 2011

Чтобы покрыть пути URI, которые заканчиваются на / 123 , мы можем использовать это правило:

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

Итак:

  • file.php / 1 будет file.php? Page = 1
  • dir / file / 2 будет dir / file? 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 = что-то / 3 будет dir / file.php? Name = что-то & page = 3
...