301 Перенаправить добавление неверных дополнительных сегментов в URL - PullRequest
0 голосов
/ 23 марта 2012

Мне нужно 301 перенаправить один сегмент URL-адреса на новую версию этого.

Моя цель - перенаправление

www.domain.co.uk / ферма / все /

до

www.domain.co.uk / farm_cottages / что /

Правило, которое я использую для этого:

RedirectMatch 301 ^ / farm / / farm_cottages /

Однако по какой-то причине он частично работает, но добавляется? / Farm / after farm_cottages / в окончательном URL-адресе, т.е.

www.domain.co.uk / farm_cottages /? / Ферма / все /

Вот весь мой набор правил перезаписи, так как я считаю, что одно из правил перезаписи может мешать правилу перенаправления.

#redirect /farm/ to /farm_cottages/
RedirectMatch 301 ^/farm/  /farm_cottages/

<IfModule mod_rewrite.c>
RewriteEngine on

# no WWW to WWW
RewriteCond %{HTTP_HOST} !^www.domain.co.uk$ [NC]
RewriteRule ^(.*)$ http://www.domain.co.uk/$1 [R=301,L]

# Force trailing slash on URLs
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.co.uk/$1/ [L,R=301]

#Remove index.php
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC]
RewriteRule ^index\.php(.+) $1 [R=301,L]

</IfModule>

Сайт построен в Expressionengine, и поэтому сегменты URL не представляют реальные папки - хотя я не думаю, что это должно иметь значение.

Любые идеи будут высоко оценены! Спасибо

1 Ответ

1 голос
/ 24 марта 2012

Хорошо, в конце концов я решил эту проблему следующим образом - надеюсь, это может кому-то помочь в будущем:

RewriteRule ^farm/(.*)$ /farm_cottages/$1 [QSA,R=301,L]
...