#php #apache #.htaccess #mod-rewrite
#php #apache #.htaccess #мод-перезапись
Вопрос:
В настоящее время у меня есть простая перезапись, которая перенаправляет
/photos/2
Для
/photoviewer.php?photo=2
Однако мне нужно иметь возможность разрешить пользователю добавлять фотографию в свою корзину, поэтому я подумал, что мне нужно сохранить строку запроса, чтобы сработало следующее.
/photos/2?action=purchase
перенаправляет на:
/photoviewer.php?photo=2amp;action=purcahse
Мое текущее правило htaccess:
RewriteRule ^photos/([a-zA-Z0-9_-] )$ photoviewer.php?photo=$1 [L]
Ответ №1:
Добавьте [QSA]
флаг (добавление строки запроса).
RewriteRule ^photos/([a-zA-Z0-9_-] )$ photoviewer.php?photo=$1 [L,QSA]
Комментарии:
1. Спасибо за удивительно быстрый ответ! Я соглашусь, когда мне позволит таймер.
Ответ №2:
В вашем правиле замените [L]
на [L,QSA]
.
Это позволит сохранить информацию о запросе.
Надеюсь, это поможет!
Комментарии:
1. где L означает последнее, т. е. Если правило соответствует, не смотрите на другие правила.
Ответ №3:
[QSA,L]
вместо просто [L]
должно сработать. Надеюсь, это поможет!
Ответ №4:
Как насчет того, чтобы просто расширить идею передачи «любых» пар имя / значение через URL в photoviewer.php скрипт? Это элегантный подход, который я использовал в прошлом.
RewriteRule ^photos/([^/.-] )/([^/.-] )$ /photoviewer.php?$1=$2 [L]
RewriteRule ^photos/([^/.-] )/([^/.-] )/([^/.-] )/([^/.-] )$ /photoviewer.php?$1=$2amp;$3=$4 [L]
RewriteRule ^photos/([^/.-] )/([^/.-] )/([^/.-] )/([^/.-] )/([^/.-] )/([^/.-] )$ /photoviewer.php?$1=$2amp;$3=$4amp;$5=$6 [L]
Итак, что-то вроде:
photos/photo/2/action/purchase
перезаписывает в:
photoviewer.php?photo=2amp;action=purchase