.htaccess 重定向具有相同子文件夹的不同url

.htaccess 重定向具有相同子文件夹的不同url,.htaccess,redirect,multisite,.htaccess,Redirect,Multisite,我在wordpress多站点上 我有相同子文件夹名称的旧url,现在我必须将旧url重定向到具有新子文件夹名称的新url 示例(将更简单) 旧url 1到新url 1: http://site1.fr/fr-chauffage.html 到 https://www.site1.fr/installation_chauffage 旧url 2到新url 2: http://site2.fr/fr-chauffage.html至https://www.site2.fr/installateur_ch

我在wordpress多站点上

我有相同子文件夹名称的旧url,现在我必须将旧url重定向到具有新子文件夹名称的新url

示例(将更简单)

旧url 1到新url 1:

http://site1.fr/fr-chauffage.html 
https://www.site1.fr/installation_chauffage

旧url 2到新url 2:

http://site2.fr/fr-chauffage.html
https://www.site2.fr/installateur_chauffage_dans_ma_region

所以我写了下面的htaccess文件

RewriteCond %{HTTP_HOST} ^site1\.fr
RewriteRule ^/?(.*)$ https://www.site1.fr/$1 [R=301,L]
RewriteRule ^fr\.html$ / [R=301,L]
RewriteRule ^fr-chauffage.html$ /installation_chauffage/ [R=301,NC,L]
 
RewriteCond %{HTTP_HOST} ^site2\.fr
RewriteRule ^/?(.*)$ https://www.site2.fr/$1 [R=301,L]
RewriteRule ^fr\.html$ / [R=301,L]
RewriteRule ^fr-chauffage.html$ /installateur_chauffage_dans_ma_region/ [R=301,NC,L]
问题是,无论用户所在的网站是什么,都会重定向到site1+good_子文件夹

如果我有3个具有相同子文件夹名称的网站,用户将始终重定向到新url的site1+good_子文件夹

问题是,无论用户所在的网站是什么,都会重定向到site1+good_子文件夹

因为
RewriteCond
指令只适用于后面的第一条
RewriteRule
。随后的两个
RewriteRule
指令将无条件执行

您需要对所有需要应用该条件的规则重复该条件

您的指令的顺序也是错误的-您需要先有更具体的规则,否则您将得到多个重定向。目前,您正在重定向第一条规则中的所有内容。然后你有一个更具体的重定向

那么,所有传入请求是否都少于
www
前缀(如您的示例和指令中所建议的)

请尝试以下操作:

# Common rules for both sites
# (Although this will result in 2 redirects if requesting the non-canonical hostname)
RewriteRule ^fr\.html$ / [R=301,L]

# Site 1 rdirects
RewriteCond %{HTTP_HOST} ^(www\.)?site1\.fr [NC]
RewriteRule ^fr-chauffage.html$ https://www.site1.fr/installation_chauffage/ [R=301,NC,L]

# Site 2 rdirects
RewriteCond %{HTTP_HOST} ^(www\.)?site2\.fr [NC]
RewriteRule ^fr-chauffage.html$ https://www.site2.fr/installateur_chauffage_dans_ma_region/ [R=301,NC,L]

# non-www to www redirect - both sites
RewriteCond %{HTTP_HOST} ^(site1\.fr|site2\.fr) [NC]
RewriteRule (.*) https://www.%{HTTP_HOST}/$1 [R=301,L]

这里有多少个不同的域?如果您正在将所有域重定向到
www
,并且没有使用其他子域,则无需明确列出要重定向到
www
的域(正如我在回答中所做的)。