Динамическая перезапись в файле htaccess - PullRequest
0 голосов
/ 02 сентября 2011

Я работаю над некоторыми изменениями и переадресациями в моем файле htaccess.Моя причина для этого заключается в том, что я разрабатываю новый дизайн и макет для существующего веб-сайта, поэтому мне нужно перенаправить, чтобы сохранить рейтинг Google и т. Д.

Таким образом, старый (существующий) URL выглядит следующим образом:

/news/internet-shopper-numbers-continue-to-grow-$21378232.htm

и новый URL будет выглядеть следующим образом:

/industry-news/small-business-website-design/internet-shopper-numbers-continue-to-grow/800715788

В старом URL internet-shopper-numbers-continue-to-grow генерируется динамически, где, как в новом URL small-business-website-design, internet-shopper-numbers-continue-to-grow и 800715788 все генерируются динамически.

Так что моя проблема в том, как мне перейти с 1 URL на другой, если доступна только 1 из динамически генерируемых переменных.

Я думалвозможно, было бы неплохо сделать перенаправление PHP вместо этого, где я могу получить данные из процесса URL через базу данных, чтобы получить все данные, необходимые для генерации нового URL, но я не уверен, что это хорошая практика, это будеттакже означает необходимость совпадать со старым каталогом файлов URL, который не является текущим регистром.

Я предполагаю, что я начну с чего-то вроде этого:

Options +FollowSymlinks
RewriteEngine On
RewriteCond /news/%{QUERY_STRING}(.)(\\d+)(.)(htm)$
RewriteRule ^industry-news/(.+)/%1/(\d{9})

Я знаю, что это очень просто икак-то не так, но я работаю над этим в первый раз, и я в замешательстве.

- дополнительный вопрос -

могу ли я сделать что-то подобное?

RewriteCond /new/%{QUERY_STRING}(.)(\\d+).htm$
RewriteRule ^industry-new/article/article.php?direct=%1

Я не знаю, как на самом деле протестировать их, но сработает ли это?

1 Ответ

1 голос
/ 02 сентября 2011

Да, это определенно хорошая идея сделать все перенаправления в php. Просто имейте простую "ловушку" .htaccess

RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteRule  .* index.php

Затем преобразуйте URL-адреса в php, как вам нужно, и при необходимости отправляйте заголовок местоположения. Было бы неплохо добавить код статуса 301 для «старых» URL.

...