Mod rewrite Apache Mod重写规则特殊条件

Mod rewrite Apache Mod重写规则特殊条件,mod-rewrite,Mod Rewrite,我正试图将一个旧域名重定向到它的新域名,但我需要制定一些规则,到目前为止,我还没有把它弄对 旧域名(例如www.old-domain.com)有数百个文件夹名称,以英国城镇命名,如下所示: www.old-domain.com/sheffield/ www.old-domain.com/london/ www.old-domain.com/essex/ 在这些文件夹中,每个文件夹都包含一个index.html文件和可能的其他directoreis和文件 我需要以这样的方式将它们重定向到新域,以便

我正试图将一个旧域名重定向到它的新域名,但我需要制定一些规则,到目前为止,我还没有把它弄对

旧域名(例如www.old-domain.com)有数百个文件夹名称,以英国城镇命名,如下所示:

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

在这些文件夹中,每个文件夹都包含一个index.html文件和可能的其他directoreis和文件

我需要以这样的方式将它们重定向到新域,以便旧域/城镇映射到新域/城镇,但是旧域/城镇/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 rewrite教程看几个小时之前,有人能解释一下吗?

提示:重写规则是在第一次匹配的基础上处理的。
你可以把你的例外放在主要规则之前

经过大约4-5个小时的尝试,并阅读上帝知道我有多少重写规则的教程。以下是仅用于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]

谢谢你。Mod Rewrite就像一个复杂的雷区。它与ReGEX几乎相形见拙……只有大量复杂的规则和随机的行话,几乎每一次都需要很长时间才能找到你想要的确切模式。但是我确实解决了这个问题,下面就是我所做的。除非你有一些不同的目录将被转发,否则我会尝试进一步简化它:RewriteRule^(.*)\/index\.html[R=301,L]RewriteRule^(.*)[R=301,L]谢谢Germann。我明白你的逻辑。我现在不能这样做,因为我们不是一次性重定向所有位置。这里的董事会对搜索引擎优化排名相当烦恼,所以我们已经对大约3500个地点中的10个进行了排名。然而,当我们进行全面的交换时,我肯定会回来再看看你的例子。再次感谢您抽出时间。