Переадресация .htaccess, если не поддомен - PullRequest
1 голос
/ 11 февраля 2012

У меня есть файл .htaccess, использующий mod_rewrite для перенаправления URL-адресов со старого сайта на новые эквиваленты веб-страницы.Новый сайт можно посмотреть по адресу www.eastwood-whelpton.co.uk (который сейчас работает только в браузерах HTML5).

До сих пор у меня получалось работать, делая множество операторов Redirect Permanent для перевода каждой из старых страниц.в место на новом сайте.

Это работало до тех пор, пока мне не понадобилось создать поддомен для старого сайта (который мне нужно сохранить).Раньше он был просто в папке /old/, но Google все еще сканирует его, несмотря на то, что он не был разрешен из Robots.txt.Чтобы исправить это, я поместил его в поддомен 'old'.

Проблема сейчас в том, что при доступе к странице, такой как old.eastwood-whelpton.co.uk/about.htm, все равно будет пытаться перенаправить на old.eastwood-whelpton.co.uk/about/about.php - на новом сайте.

Вот фрагмент моего файла HTACCESS.Все, что мне нужно, это перенаправить старые страницы www, но не старые страницы в старом поддомене.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^eastwood-whelpton [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

DirectoryIndex index.php

Redirect permanent /index.htm /index.php
Redirect permanent /index.html /index.php

Redirect permanent /yachthire.htm /holidays/sailingholidays.php
Redirect permanent /yachts.htm /about/thefleet.php
Redirect permanent /handover.htm /training/handover.php
Redirect permanent /holiday.htm /holidays/familyholidays.php

1 Ответ

1 голос
/ 11 февраля 2012

Прежде всего, Redirect является директивой от mod_alias

Не смешивайте их!Ваша директива Redirect будет выполняться независимо от того, что RewriteRule у вас есть.

Сделайте это вместо:

Я изменил ваш Redirects на RewriteRule и немного их подправил,Добавили,

RewriteCond% {HTTP_HOST} ^ old [NC]
RewriteRule ^ - [L]

Это не будет перенаправлять ни одну из ваших oldURL сайта.

Вот и все:

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^old [NC]
RewriteRule ^ - [L]

RewriteCond %{HTTP_HOST} ^eastwood-whelpton [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

DirectoryIndex index.php

ReWriteRule index\.html? /index.php [L,R=301]
ReWriteRule yachthire\.htm /holidays/sailingholidays.php [L,R=301]
ReWriteRule yachts\.htm /about/thefleet.php [L,R=301]
ReWriteRule (handover)\.htm /training/$1.php [L,R=301]
ReWriteRule (holiday)\.htm /holidays/family$1s.php [L,R=301]
...