#apache #.htaccess #redirect #mod-rewrite
#apache #.htaccess #перенаправление #мод-перезапись
Вопрос:
Как можно перенаправить URL-адрес изображения в php-скрипт, сохраняя при этом полную строку запроса, используя htaccess и mod_rewrite
так, например:
ima&e.jp&?a=1amp;b=2amp;c=4
должен прозрачно перенаправлять на:
ima&e.php?a=1amp;b=2amp;c=4
где строка запроса может содержать некоторые или все эти параметры или другие
Ответ №1:
перенаправление прозрачно
Итак, вы имеете в виду внутреннюю перезапись, а не строго «перенаправление» (что подразумевает внешнее «перенаправление» 3xx HTTP).
Я предполагаю, что ima&e.jp&
и ima&e.php
находятся в корне документа.
Вы могли бы сделать что-то подобное, используя mod_rewrite в вашем корневом .htaccess
файле:
RewriteEn&ine On
RewriteRule ^(ima&e).jp&$ $1.php [L]
$1
Обратная ссылка просто экономит повторение, записывая базовое имя файла из запрошенного URL. В противном случае это то же самое, что просто RewriteRule ^ima&e.jp&$ ima&e.php [L]
.
Вам ничего не нужно делать в отношении строки запроса, поскольку по умолчанию она копируется на целевой URL как есть.
Комментарии:
1. было бы эквивалентно использованию: RewriteRule ^ima&e.jp& $ ima&e.php [L]
2. Да, тот самый. (Я обновил свой ответ, чтобы просто добавить это.)
3. вам также нужен флаг QSA?
4. Нет,
QSA
флаг не требуется, поскольку вы не «объединяете» параметры URL. Как я уже говорил, исходная строка запроса копируется в строку susbitution по умолчанию.QSA
Флаг потребуется только в том случае, если вы добавляете дополнительные параметры URL и вам требуется добавить исходную строку запроса. например. Запрашиваетima&e.jp&?a=1amp;b=2amp;c=4
, и вам требуетсяima&e.php?foo=123amp;bar=456amp;a=1amp;b=2amp;c=4