массовый редирект 301 с .htaccess после миграции сайта - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть сайт, который был создан давно с помощью простого ASP.Это сайт отеля.Он содержит страницы типа списка и отдельные страницы отеля.В настоящее время мой сайт размещен на сервере Windows, который также поддерживает PHP (но без поддержки .htaccess, очевидно).Несколько месяцев назад я начал перекодировать весь сайт, используя php / mysql.

Сначала я создал новые страницы типа списка, я сделал необходимые 301 переадресацию на панели управления хостингом, чтобы сохранить хорошие позиции в поисковых системах.Эти страницы были хорошо проиндексированы Google в течение последних нескольких месяцев, поэтому они в порядке.

Теперь я готов перекодировать оставшиеся страницы отеля (около 400), и теперь я хочу перенести весь сайт на сервер Apache, который поддерживает .htaccess.

Существует две языковые версии страниц отеля, английская и немецкая.
Старые английские страницы отелей ASP расположены по адресу www.mysite.com / hotel / hotel-name.asp и я хочу перенаправить их на www.mysite.com / hotel / hotel-name.php , поэтому в этом случае только расширение файла изменяется с .asp на .php.

Старые немецкие страницы отелей ASP были расположены по адресу www.mysite.com / hotel / deutsch / hotel-name.asp , и я хочу перенаправить их на www.mysite.com / hotel / hotel-name.de.php , поэтому в этом случае изменяется не только расширение файла с .asp на .php, но также имена и пути к файлам.

Мой вопрос: как я могу сделать необходимые массовые перенаправления с помощью .htaccess?

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

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011

Это будет работать:

RewriteEngine On

# redirect German version
RewriteRule ^hotel/deutsch/(.+)\.asp$ http://www.mysite.com/hotel/$1.de.php [R=301,L]

# redirect English version
RewriteRule ^hotel/(.+)\.asp$ http://www.mysite.com/hotel/$1.php [R=301,L]

Здесь важен порядок правил.Сначала мы сопоставляем немецкие версии и только затем английские страницы (поскольку шаблон для URL для английских страниц является более широким и также будет соответствовать немецким URL-адресам, что приведет к неправильному перенаправлению).

0 голосов
/ 09 сентября 2011

Это должно сработать:

RewriteRule /hotel/deutsch/(.+?)\.asp /hotel/$1.de.php [R=301,L]
RewriteRule /hotel/(.+?)\.asp /hotel/$1.php [R=301,L]

Редактировать: Извините, я пропустил, что немецкоязычные страницы * .de.php.Я обновил ответ, чтобы использовать отдельные переписки для страниц на английском и немецком языках.

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