$ _Get не работает в этом конкретном случае - PullRequest
2 голосов
/ 27 сентября 2010

Я пытаюсь использовать http://www.example.com/news/id/21/title/top-10-things/?page= 1 для отправки параметра страницы, и он не работает в php

ниже мои настройки в файле .htaccess

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news/(.*)/(.*)/(.*)/(.*)/$ /news.php?$1=$2&$3=$4
RewriteRule ^news/(.*)/(.*)/$ /news.php?$1=$2
RewriteRule ^news/$ /news.php

Ответы [ 2 ]

3 голосов
/ 27 сентября 2010

Попробуйте добавить %{QUERY_STRING} к URL-адресам в вашем htaccess.

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news/(.*)/(.*)/(.*)/(.*)/$ /news.php?$1=$2&$3=$4&%{QUERY_STRING}
RewriteRule ^news/(.*)/(.*)/$ /news.php?$1=$2&%{QUERY_STRING}
RewriteRule ^news/$ /news.php&%{QUERY_STRING}

Как отметил Дэниел, для этой цели вы также можете использовать флаг mod_rewrite qsappend или QSA.REF: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news/(.*)/(.*)/(.*)/(.*)/$ /news.php?$1=$2&$3=$4 [QSA]
RewriteRule ^news/(.*)/(.*)/$ /news.php?$1=$2 [QSA]
RewriteRule ^news/$ /news.php [QSA]
1 голос
/ 27 сентября 2010

Установите флаг QSA , чтобы запрошенный запрос автоматически добавлялся к URL-адресу в замещающем URL:

RewriteRule ^news/(.*)/(.*)/(.*)/(.*)/$ /news.php?$1=$2&$3=$4 [QSA]
RewriteRule ^news/(.*)/(.*)/$ /news.php?$1=$2 [QSA]
RewriteRule ^news/$ /news.php [QSA]

Кроме того, вы не должны использовать .*, если можете быть более конкретным. В этом случае использование [^/]+ позволяет избежать ненужного возврата:

RewriteRule ^news/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ /news.php?$1=$2&$3=$4 [QSA]
RewriteRule ^news/([^/]+)/([^/]+)/$ /news.php?$1=$2 [QSA]
RewriteRule ^news/$ /news.php [QSA]

А общее решение для произвольного числа или параметров см. В Перезапись произвольного числа сегментов пути в параметры запроса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...