301重定向向网址添加不正确的额外细分

时间:2012-03-23 19:01:27

标签: apache mod-rewrite redirect http-status-code-301

我需要301将网址的一个网段重定向到新版本。

我的目标是重定向

  

www.domain.co.uk/farm/whatever /

  

www.domain.co.uk/farm_cottages/whatever /

我用来做这个的规则是:

RedirectMatch 301 ^ / farm / / farm_cottages /

但由于某种原因,它部分有效,但在最后的网址中追加?/ farm / after farm_cottages /。

  

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中构建的,因此网址的细分不代表实际的文件夹 - 我认为这不应该重要。

任何想法都将不胜感激!感谢

1 个答案:

答案 0 :(得分:1)

好的,我最终解决了这个问题 - 我希望它可能在将来帮助某人:

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