0

我有多个网址,想将旧网址重定向到新网址。

下面的代码确实有效,因此例如 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(未找到)。

你能帮我在这里让我的方法奏效吗?

4

0 回答 0