我有多个网址,想将旧网址重定向到新网址。
下面的代码确实有效,因此例如 htaccess 正在捕获www.domain-a.com/index.php?id=41
并使用 301 状态代码将其重定向到具有路径的同一域www.domain-a.com/our-conditions
:
#301 redirect for domain A on a special id.
RewriteCond %{HTTP_HOST} ^www\.domain-a\.com$
RewriteCond %{REQUEST_URI} ^\/index\.php$
RewriteCond %{QUERY_STRING} ^id=41(.*)$
RewriteRule .* https://%{HTTP_HOST}/our-conditions? [R=301,L]
#410 on for domain A on a special id.
RewriteCond %{HTTP_HOST} ^www\.domain-a\.com$
RewriteCond %{REQUEST_URI} ^\/index\.php$
RewriteCond %{QUERY_STRING} ^id=52(.*)$
RewriteRule .* - [R=410,L]
#301 redirect for domain B on a special id.
RewriteCond %{HTTP_HOST} ^www\.domain-b\.com$
RewriteCond %{REQUEST_URI} ^\/index\.php$
RewriteCond %{QUERY_STRING} ^id=221(.*)$
RewriteRule .* https://%{HTTP_HOST}/press? [R=301,L]
正如您在上面看到的那样,只有几条规则的代码很多。现在我认为这可以做得更好,我尝试了一些不同的东西。
我的想法是为一个域设置多个 RewriteRules。通常像这里的这个例子一样工作得很好:
RewriteCond %{HTTP_HOST} ^www\.domain-a\.com$
RewriteRule ^press/material/(/?)$ https://%{HTTP_HOST}/press [R=301,L]
RewriteRule ^about/(/?)$ https://www.domain-b.de/impress [R=301,L]
现在我想出了这个试验:
#Multiple rules for domain A on a special id.
RewriteCond %{HTTP_HOST} ^www\.domain-a\.com$
RewriteCond %{REQUEST_URI} ^\/index\.php$
RewriteRule ^index.php?id=41(/?)$ https://%{HTTP_HOST}/our-conditions? [R=301,L]
RewriteRule ^index.php?id=52(/?)$ - [R=410,L]
#Multiple rules for domain B on a special id.
RewriteCond %{HTTP_HOST} ^www\.domain-b\.com$
RewriteCond %{REQUEST_URI} ^\/index\.php$
RewriteRule ^index.php?id=221(/?)$ https://%{HTTP_HOST}/press? [R=301,L]
这里的问题是我的条件不适用。例如index.php?id=41
,只是通过 htaccess,而我的应用程序确实说 404(未找到)。
你能帮我在这里让我的方法奏效吗?