Я меняю свой сайт, чтобы отображать такие удобные URL-адреса:
www.example.com/folder/topic
Работает отлично!
Но когда я добавляю параметр в URL:
www.example.com/folder/topic?page=2
$_GET перестает работать. Он вообще не распознает параметр. Я что-то упускаю? Параметр работал нормально до использования полных URL-адресов.






Если вы используете mod_rewrite, то это ваши правила нарушены. Либо строка запроса не передается, либо mod_rewrite отбрасывает все, что было после /тема.
Попробуйте добавить правило, которое вы можете сделать: www.example.com/folder/topic/2
Если вы хотите, чтобы ваши URL-адреса PHP были «дружественными», вам нужно использовать что-то вроде mod_rewrite Apache. Погуглите что-нибудь вроде "apache mod_write friendly url", и вы получите множество статей на эту тему.
Если это проблема с mod_rewrite, как это звучит, вы можете добавить флаг [QSA] в свое правило mod_rewrite, чтобы добавить строку запроса к перезаписанному URL-адресу, а не отбрасывать ее.
Ваше правило будет выглядеть так:
RewriteRule from to [QSA]
I'm changing my site to show friendly URLs
Вы делаете это с помощью mod_rewrite или реорганизуя файловую структуру? Если первое, вполне вероятно, что ваши правила могут нуждаться в доработке.
Если это реорганизация файлов, что вы получите, если вы вставите print_r($_GET) в www.example.com/folder/topic?page=2?
Ответ MrZebra правильный. Это позволит вам продолжать использовать строку запроса, как в конце URL-адреса, и вам не нужно так или иначе ожидать ее наличия.