首页 > 解决方案 > 问题 HTACCESS:如何赋予优先级绝对路径?

问题描述

我们正忙于为我们的网店改名,我正在处理我们的 HTACCESS 以重定向 1700 个链接。从这 1700 个链接中,有 177 个链接在我们的新网店中发生变化。所以他们必须在 HTACCESS 中。其他链接保持不变,我现在使用一般重写将它们重定向。

现在唯一的问题是他看起来不太清楚确切的链接是什么。例如见下面我的 HTACCESS。

RewriteEngine on

# Redirect to domain with www.
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Same for HTTPS:
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.old\.nl$ [NC]
RewriteRule ^vloerkleden/categorie/(.*)$ https://www.new.nl/vloerkleden/ [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.old\.nl$ [NC]
RewriteRule ^vloerkleden/categorie/vintage-vloerkleed/(.*)$ https://www.new.nl/vloerkleden/vintage-vloerkleed/ [R=301,L]

RewriteCond %{HTTP_HOST} ^old.nl [NC,OR]
RewriteCond %{HTTP_HOST} ^www.old.nl [NC]
RewriteRule ^(.*)$ https://www.new.nl/$1 [L,R=301,NC]

当我现在在浏览器 www.old.nl/vloerkleden/catagorie/vintage-vloerkleed/ 中输入以下网址时,他将我链接到 www.new.nl/vloerkleden 而不是 www.new.nl/vloerkleden/vintage-vloerkleed。

标签: .htaccess

解决方案


你在这一行的问题:

RewriteRule ^vloerkleden/categorie/(.*)$ https://www.new.nl/vloerkleden/ [R=301,L]

(.*)$所以没有什么可以代替出现https://www.new.nl/vloerkleden/,它应该看起来像这样,https://www.new.nl/vloerkleden/$1因为$1(.*)在模式中表示。

此外,您可以使用其他规则执行此操作,也可以像这样总结您的规则:

RewriteEngine on

# the folwoing rules will force every request for both old & new into https://wwww:

RewriteCond %{HTTPS} off  [OR]
RewriteCond %{HTTP_HOST} ^(?!.*www\.)(.*)$
RewriteRule .* https://www.%1%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?old\.nl$ [NC]
RewriteRule ^vloerkleden/categorie/(.*)$ https://www.new.nl/vloerkleden/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?old\.nl$ [NC]
RewriteRule ^vloerkleden/categorie/vintage-vloerkleed/(.*)$ https://www.new.nl/vloerkleden/vintage-vloerkleed/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?old.nl [NC]
RewriteRule ^(.*)$ https://www.new.nl/$1 [L,R=301,NC]

注意:清除浏览器缓存然后测试。


推荐阅读