Apache Mod重写规则特殊条件

时间:2012-07-26 16:39:09

标签: mod-rewrite

我试图将一个旧域重定向到它的noew域,但是我需要设置一些规则,到目前为止我还没有设法让它完全正确。

旧域名,例如www.old-domain.com,在英国城镇之后有数百个文件夹名称:

www.old-domain.com/sheffield/ www.old-domain.com/london/ www.old-domain.com/essex /

每个文件夹中的

都包含一个index.html文件以及其他可能的文件和文件。

我需要以这样的方式将它们重定向到新域,以便旧域/城镇映射到新域/镇,但旧域/镇/ index.html不会将index.html放在新域结束,但是如果小镇之后的路径不是index.html,而是在新域上重定向到它 对不起,这不是最容易解释的,也不是最容易阅读和不自然的我确定。

www.old-domain.com/sheffield => www.new-domain.com/sheffield

www.old-domain.com/sheffield/ => www.new-domain.com/sheffield /

www.old-domain.com/sheffield/index.html => www.new-domain.com/sheffield /

www.old-domain.com/sheffield/main.html => www.new-domain.com/sheffield/main.html

www.old-domain.com/sheffield/innerFolder/ => www.new-domain.com/sheffield/innerFolder

www.old-domain.com/sheffield/innerFolder/file.php => www.new-domain.com/sheffield/innerFolder/file.php

上面的两个粗体我设法通过这个工作:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^sheffield/(.*)$ http://www.new-domain.com/sheffield/$1 [R=301,L]

但是我真的很难让old-domain.com/sheffield/index.html不在新网域上添加.index.html。

任何人都可以解决这个问题,然后再拔掉我的头发,再看看mod重写教程了吗?

2 个答案:

答案 0 :(得分:2)

提示:重写规则在第一个匹配的基础上处理。 您可以在主规则

之前添加例外

答案 1 :(得分:0)

经过大约4-5个小时的尝试不同的组合和阅读上帝知道我设法到达那里有多少rewriterule教程。继承了3个位置的htacess文件,这些位置现在都非常好用。

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^sheffield\/index\.html http://www.new-domain.co.uk/sheffield/ [R=301,L]
RewriteRule ^sheffield/(.*)$ http://www.new-domain.co.uk/sheffield/$1 [R=301,L]

RewriteRule ^bolton\/index\.html http://www.new-domain.co.uk/bolton/ [R=301,L]
RewriteRule ^bolton/(.*)$ http://www.new-domain.co.uk/bolton/$1 [R=301,L]

RewriteRule ^coventry\/index\.html http://www.new-domain.co.uk/coventry/ [R=301,L]
RewriteRule ^coventry/(.*)$ http://www.new-domain.co.uk/coventry/$1 [R=301,L]