Querystring append
Я предполагаю, что ваши ссылки в электронном письме выглядят так
www.foobar.com/twenty2talk?name=Joe Bloggs&position=director&
company=The Butchers&telephone=000&email=joe.bloggs@thebutchers.co.uk
, и вы хотите перейти по этому базовому URL
www.foobar.com/index.php?page=twenty2talk&name=Joe Bloggs&position=director&
company=The Butchers&telephone=000&email=joe.bloggs@thebutchers.co.uk
(Разрывы строк вставлены только для ясности.)
Если вам действительно нужно сопоставить содержимое внутри строки запроса (содержимое после?), Вы можете, но не использовать только RewriteRule.К счастью, вам не нужно.В mod_rewrite есть нечто, называемое querystring append, которое позволяет просто добавить что-то в существующую строку запроса.
RewriteRule ^twenty2talk/?$ index.php?page=twenty-2-talk [QSA,L]
Это правило добавляет page=twenty-2-talk
, но также сохраняет имя и т. Д. Без изменений.Часть /?
позволяет писать начальный URL с косой чертой или без нее, что является хорошей практикой.Знак вопроса буквально означает «соответствовать предыдущему символу 0 или 1 раз».
Если у вас есть несколько таких кампаний, вы можете написать более динамическое правило:
RewriteRule ^(twenty2talk|winfreebeer|wowamazing)/?$ index.php?page=$1 [QSA,L]
В этом конкретном примереДвадцать два разговора будут переписаны на page=twenty2talk
без дефисов, а не page=twenty-2-talk
.Но это нормально - просто проверьте оба кода в коде PHP.
В будущем - универсальное правило
В будущем я бы рекомендовал использовать специальную виртуальную «папку» для всехкампаний, в которых учитывается правило «поймать все».
RewriteRule ^campaigns/([^/]+)/?$ index.php?page=$1 [QSA,L]
Это правило будет ловить
www.foobar.com/campaigns/twenty2talk?name=...
www.foobar.com/campaigns/winfreebeer?name=...
www.foobar.com/campaigns/wowamazing?name=...
и т. д.поэтому вам не нужно переписывать файл .htaccess для каждой кампании.