Intereting Posts
Есть ли способ переключить «Скрытые» или «Только для чтения» в файл Windows с помощью PHP? Подпишитесь на подписчиков YouTube с помощью нового API YouTube v3 Экспорт данных csv php mysql – все данные экспортируются в один столбец Управление ролью Yii2 с rbac и хранилищем базы данных Использовать композитор для установки пакета в пользовательском каталоге .htaccess не работает на xampp (windows 7) Как структурировать модульное приложение в Laravel 5? MySQL Создать триггер Вставить содержимое в другую таблицу из одной базы данных Открыть график | Опубликовать действие | Использование PHP для cURL вместо терминального Валидация не работает в codeigniter Что происходит, когда я отправляю логическое значение True-False в инструкцию PDO в качестве параметра, связанного с полем int? Временное удаление HTML из строки для API Google Translate для снижения стоимости PHP / HTML отображает скрытые символы Производительность PHP parse_ini_file ()? Содержимое поля ввода для html.tpl.php в Drupal 7

Проверка файлов cookie и перенаправление с помощью Apache

Мне бы хотелось получить от этого отзывы. Я не уверен, что это правильный подход.

Детали

Я запускаю Apache 2 с PHP 5.3 / MySQL 4 и Drupal 6 является платформой.

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

Предложенное решение

Теперь я хочу, чтобы URL mydomain.com/reviews перенаправлял URL-адрес города в зависимости от выбора города. Например, mydomain.com/reviews/paris, если бы я выбрал Париж своим городом. (Если нет файла cookie, он должен перенаправить на город по умолчанию).

Я считаю это лучшей альтернативой, потому что я хочу, чтобы пользователь мог видеть отзывы в другом городе, не меняя своего города. Если они хотели бы просмотреть отзывы для лондонского ресторана, они могут просто перейти на mydomain.com/reviews/london.

Для лучшей производительности я думаю, что Apache проверяет файл cookie и перенаправляет его в нужный город, когда пользователь переходит на mydomain.com/reviews.

Итак, вот мои вопросы …

  1. Как настроить Apache для этого?
  2. Это лучший способ пойти?

  1. Чтобы настроить Apache для этого, используйте следующее, заменив имя файла cookie.

    RewriteEngine on RewriteCond %{REQUEST_URI} ^/reviews/?$ RewriteCond %{HTTP_COOKIE} <cookie>=([^;]+) RewriteRule .* http://mydomain.com/reviews/%1 [R=302,L] 
  2. Yelp хранит местоположение в куки-файле, поэтому я бы воспринял это как хороший знак, так как у них тонна трафика и, кажется, преуспевает.

Есть плюсы и минусы использования Apache для переадресации, но главный аргумент заключается в том, что проще сохранить правило перезаписи в коде, а не на сервере. Вы можете быстро исправить и развернуть, вместо того, чтобы менять и перезапускать все серверы Apache.

 <?php $city = $_COOKIE['city']; header("Location: mydomain.com/reviews/".$city); ?> 

Вам не нужно настраивать Apache.

Существует также способ предоставить настраиваемое значение по умолчанию, если cookie не задан непосредственно в правилах перезаписи!

% 1 всегда ссылается на последнюю оценку RewriteCond ! Если файл cookie найден, второй RewriteCond игнорируется. Если ни один не найден, выполняется оценка второго. Все, что он делает, это дать значение, а затем сопоставить все это значение!

 RewriteEngine on RewriteCond %{HTTP_COOKIE} cookiename=([^;]+) [OR] RewriteCond defaultvalue (.*) RewriteRule ^(.*)$ /mypath/%1 [L,R=302] 

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