Назад | Перейти на главную страницу

.htaccess перенаправление со старого грязного URL на чистый новый URL с параметрами

У меня есть следующие 2 ссылки, я не очень хорошо разбираюсь в правилах .htaccess все же.

Old URL: http://www.mywebsite.org.uk/donate/donate.php?charity_id=885&project_id=18111
New URL: http://new.mywebsite.org.uk/donation/to/885/18111

Я хочу, чтобы весь трафик поступал со старого URL-адреса на новый URL-адрес (включая параметры charity_id & project_id).

Я пытаюсь изучить правила .htaccess, но нахожу онлайн-учебники довольно расплывчатыми.

Мне действительно нужно простое объяснение правил .htaccess.

(Дай человеку рыбу, накорми его день, научи человека ловить рыбу, накорми его на всю жизнь).

Правильный ответ будет ответом с простым и полезным объяснением (вместе с правилами, если это возможно!).

Чтобы научиться настраивать правила .htaccess, вам, по крайней мере, понадобятся некоторые навыки регулярного выражения и вы будете уверены в использовании модуля mod_rewrite Apache, так как он удобен для создания правил перезаписи благодаря своей гибкости.

Если это так, ваш код может быть похож на

RewriteEngine On
RewriteCond %{QUERY_STRING} ^charity_id=([0-9]+)&project_id=([0-9]+)$
RewriteRule donate/donate.php http://new.mywebsite.org.uk/donation/to/%1/%2? [L,R=301]

В http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html (для версии Apache 2.4 выберите другой, если применимо) доступен полезный справочник, поэтому вам нужно начать с него, даже чтобы лучше понять приведенный выше код.

Вы можете думать о RewriteRule как кирпич для перезаписи, поэтому каждое правило будет использовать его хотя бы один раз. Вы добавите раньше RewriteCond когда вам нужно проверить переменные среды или сослаться на значения строки запроса, как в нашем фрагменте кода.

Чтобы поместить обратную ссылку в строку подстановки из предыдущего RewriteCond вы будете использовать из %1 к %9 ценности; если вам нужна обратная ссылка из первой части RewriteRule сам, вы будете использовать $1 к $9.

Обратите внимание на знак вопроса в конце URL-адреса замены, так как это способ пропустить строку запроса; в случае отсутствия у вас будет ?charity_id=885&project_id=18111 в конце нового URL.

В другом посте sysadmin1138 написал очень хорошее введение в перезапись модов.

Вы можете найти сообщение Вот.

/ РЕДАКТИРОВАТЬ: Пример:

old: http://example.com/path?var=val 
new: http://example.com/path/var/val

.htaccess

RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^/path /path/%1/%2?