Мод re_write бот работает с внешними ссылками из почтовой кампании - PullRequest
0 голосов
/ 21 марта 2011

Требуется некоторая помощь в том, чтобы заставить мой сайт понять ссылку, используемую в электронном письме с несколькими переменными $ _GET для аккуратного отображения в адресной строке.

Это электронное письмо является частью маркетинговой электронной почты.кампании и разосланы по многим адресам, ссылка в электронном письме является динамической и использует встроенную информацию из электронного письма для заполнения $ _GET vars.

Т.е. www.foobar.com?page=twenty2talk&name=Joe Bloggs & position= Director & Company = The Butchers&telephone=000&email=joe.bloggs@thebutchers.co.uk

Таким образом, с помощью приведенного выше примера ссылки, используемого внутри электронных писем, пользователь нажимает на него и направляет его на наш веб-сайт согласно норме.

У меня возникли проблемы с преобразованием этой информации (где содержимое $ _GET vars всегда будет меняться) через mod re_write.

В моем файле .htaccess у меня есть следующий RewriteRule.

RewriteRule ^twenty2talk$       index.php?
                                  page=twenty-2-talk
                                  &name=$1
                                  &position=$2
                                  &company=$3
                                  &telephone=$4
                                  &email=$5 [L]

Я надеюсь, что не пропустил ни одной ключевой информации, но если это так, пожалуйста, сообщите мне.

Заранее спасибо,

Дан.

Ответы [ 2 ]

1 голос
/ 21 марта 2011

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 для каждой кампании.

0 голосов
/ 21 марта 2011

Ваше правило перезаписи неверно, вы используете заполнители ($ X), но ничего не перехватываете.

Более того, если я прочитаю его, он скажет "www.foobar.com/twenty2talk" www.foobar.com/index.php?page=twenty-2-talk&name=$1&position=$2&company=$3&telephone=$4&email= 5 долларов США [л]

Я не уверен, что это то, что вы хотите достичь ...

Можете ли вы записать пример, который может быть дан для перезаписи модуля (хороший) и тот, к которому он должен привести (php get one)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...