1

我们与供应商存在合规问题,就好像您输入的 URL 大写错误,他们的品牌是错误的。我们在私人 apache 服务器上,因此可以根据需要编辑 htaccess 等。

URL 是 /example/Brand-Name 我们希望将以下所有变体解析回 /example/Brand-Name/(作为 301 重定向)

/example/BRAND-NAME/
/example/brand-name/
/example/Brand-name/
/example/brand-Name/

等等等等

我尝试过的所有 htaccess 东西都导致了无限循环。

RewriteCond %{HTTP_HOST} /example/Brand-Name/$ [NC]
RewriteCond %{HTTP_HOST} !/example/Brand-Name/
RewriteRule ^(.*)$ /example/Brand-Name/$ [R=301,L]
4

2 回答 2

1

您是否尝试过以下两件事?您的 NoCase 声明只是品牌名称(不完全拼写为您的正确版本),并且切换了规则的顺序。

RewriteCond %{HTTP_HOST} !^/example/Brand-Name/
RewriteCond %{HTTP_HOST} ^/example/brand-name/$ [NC]
RewriteRule ^(.*)$ /example/Brand-Name/$ [R=301,L]

我相信它的工作方式就像 IF 中的 AND 语句。如果 Line1 AND Line2,则重写规则。尝试这些调整并告诉我。如果这不起作用,我会为你做一些研究。

编辑:快速搜索,我看到很多重写看起来像这样 - !^/ - 所以也许你需要在你的 ! 之后添加小屋顶 ^ 家伙。我相信重写这表示乞求匹配的位置,并且可能也应该在第二行。

于 2013-10-03T04:25:07.547 回答
0

完全不知道你是如何让你的规则起作用的,因为你的%{HTTP_HOST}var 永远不会看起来像/example/Brand-Name/. 你可能想要:

RewriteCond %{REQUEST_URI} !^/example/Brand-Name/
RewriteCond %{REQUEST_URI} ^/example/brand-name/ [NC]
RewriteRule ^example/brand-name/(.*)$ /example/Brand-Name/$1 [L,NC,R=301]
于 2013-10-03T04:27:15.700 回答