需要顶级301重定向但子域名与重定向名称相同吗?

时间:2015-02-01 16:43:43

标签: apache mod-rewrite http-status-code-301 url-redirection

我的主网站下面有多个子域: 所以:     example.com     products.example.com     books.example.com等

我尝试创建一个重定向,例如:     RedirectMatch 301 ^ / products / catalog /(.*)//products.example.com/$1 但这并不起作用,因为产品"是一个子目录/子域,因此它只是在//products.example.com

创建一个重定向循环
But This works (because /store isn't //store.example.com/)
RedirectMatch 301 ^/store/catalog/(.*) //products.example.com/$1 

我尝试使用重写来让它只重定向,如果网址包含根域,但这也不起作用。

如果页面如下:     //products.example.com/products/great-thing.html存在并且是安装在文件夹" products"中的主域下的子域。 (即/ public_html / products / ...)

-- how would you redirect from:
//example.com/products/great-thing.html to 
//products.example.com/products/great-thing.html

我希望这是有道理的!

我应该补充一点,这个网站托管在托管云/ vps上 - 因此他们的设置中可能会出现一些问题。

但最后,当存在同名文件夹/子域名时,似乎存在创建重定向的问题...

1 个答案:

答案 0 :(得分:1)

这很难追查并且可能比直接的apache重定向问题更像是一个过程线程cms问题,但是如果它对某人有帮助,那么有用的是:

所需的顶级(即根域网站) //example.com/products/great-thing.html到//products.example.com/products/great-thing.html

RewriteRule ^(。)/ products /(.https://products.example.com/products/ $ 2 [R = 301,L]

本应该去的: https://products.example.com/products/great-thing.html ,而是创建了一个永不解决的循环。

但是在子网站(processwire)上添加时它确实有效: RewriteRule ^ products /(.*) ^ / products / $ 1 [R = 301,L]