将不同的案例URL重定向到基础

时间:2013-10-03 03:13:51

标签: apache .htaccess mod-rewrite redirect

我们与供应商存在合规性问题,就好像您输入的网址大小错误,其品牌错误。我们在私有的apache服务器上,所以可以根据需要编辑htaccess等。

网址为/ 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]

2 个答案:

答案 0 :(得分: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和Line2,则执行重写规则。尝试这些调整并告诉我。如果这不起作用,我会为你做一些研究。

编辑:一个快速搜索,我看到很多重写看起来像这样 - !^ / - 所以也许你需要在你之后添加一个小屋顶^人。我相信重写这表示在哪里匹配,也应该在第二行。

答案 1 :(得分: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]