Перенаправить запрошенные URL-адреса asp на php с помощью htaccess

Мы серьезно переработали сайт, и теперь наш новый сайт основан на PHP. У нас есть несколько сайтов, на которые ссылаются наши старые страницы, которые в прошлом были страницами asp. Я хочу создать правило htaccess, но мне не удалось получить желаемый результат. Если кто-то может помочь, было бы здорово.

Входящие страницы будут в формате

http://www.mysite.com/tour.asp?id=1234

где 1234 является динамическим и может меняться. Я хочу перенаправить это на страницу viewer.php и изменить переменную строки запроса id на tourid, чтобы запрашиваемая страница была

http://www.mysite.com/viewer/1234

У меня есть другое правило в htaccess, которое направляет указанный выше URL-адрес на

http://www.mysite.com/viewer.php?tourid=1234 (это работает)

Мне нужно правило, по которому 1-й URL-адрес направляется на 2-й, надеясь, что он откроет 3-й URL-адрес. Как я могу достичь этого?

Поскольку я новичок в htaccess, может ли кто-нибудь помочь мне, как добиться этой маршрутизации? Я хочу прояснить, что сервер теперь php, и я должен сделать это, используя только htaccess. Я следил за другими подобными вопросами, но не нашел ни одного ответа на мой запрос.


person LoneWOLFs    schedule 12.07.2013    source источник


Ответы (1)


UPADTE - Я ошибся в первый раз, вот исправленная версия.

# Match and capture the id value from the URL
RewriteCond %{QUERY_STRING} id=([0-9]+)
# Redirect by passing the ID to the new site - the ? at the end removes existing query string
RewriteRule tour.asp http://www.mysite.com/viewer/%1? [R=301,L]

Я предположил, что идентификаторы только числовые.

Источник этого ответа находится по адресу https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html — выполните поиск по запросу «Изменение строки запроса», чтобы найти информацию об удалении строки запроса.

person Jon    schedule 12.07.2013
comment
Привет, спасибо, он работает с небольшой проблемой, он добавляет строку запроса в конце, например mysite.com /просмотр/324?id=324 - person LoneWOLFs; 12.07.2013
comment
Попробуйте добавить ? сразу после% 1 - сейчас я обновлю свой ответ. - person Jon; 12.07.2013
comment
Спасибо, сработало как шарм ... Хотя это не имеет отношения к заданному здесь вопросу, эти правила будут применяться ко всем запросам с идентификатором строки запроса? Если да, то каким-либо образом я могу ограничить это только теми, кто находится на tour.asp? - person LoneWOLFs; 12.07.2013
comment
@LoneWOLFs RewriteRule будет перенаправлять только запросы, соответствующие tour.asp, а RewriteCond непосредственно перед тем, как убедиться, что запросы также имеют строку запроса id - person Jon; 12.07.2013
comment
Ок спасибо за помощь. Принято и проголосовано. Специально для удаления строки запроса, которая была gr8 - person LoneWOLFs; 12.07.2013