.htaccess 重定向具有相同子文件夹的不同url
我在wordpress多站点上 我有相同子文件夹名称的旧url,现在我必须将旧url重定向到具有新子文件夹名称的新url 示例(将更简单) 旧url 1到新url 1:.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
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
的域(正如我在回答中所做的)。