У меня есть следующие 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?