301没有www的重定向域有效,但是带有www的重定向域无效

时间:2019-04-04 18:24:28

标签: regex apache redirect mod-rewrite http-status-code-301

当前,我正在处理将域A重定向到域B并将域A中的特定页面重定向到域B的请求。这是对伪代码的期望:

state = {
nome: []
}

componentWillMount(){
   let i = 0;
   //function that read my firebase
   while(i !== size_of_elements_in_my_firebase){
    db.collection("Usuários").doc(doc.ids[i].id).get().then(resposta => {
          this.setState({ 
            name : this.state.name.concat([resposta.id]),
            })
        })
   i++
   }
}
newCreateData(name){
    return {name}
  }

//in my render
const { nome, idade, cidade, estado, e_mail, tamanho } = this.state;
let i = 0;
    let data = []
    while(i !== tamanho){
      data[i] = this.newCreateData(nome[i], idade[i], cidade[i], estado[i], e_mail[i]);
      i++;
    }

return(
      <MUIDataTable
        title={"Firestore data"}
        data={data}
        columns={columns}
        options={options}
      />
    )

和:

foo.com =====> https://www.bar.com
foo.com/foo =====> https://www.bar.com/bar

但是,只有非www重定向按预期工作,而www重定向根本无法正常工作。本质上,上面的第一组重定向有效,而第二组无效。

这是我的Vhost文件:

www.foo.com =====> https://www.bar.com
www.foo.com/foo =====> https://www.bar.com/bar

我的重写规则:

<VirtualHost *:80>
  ServerName foo.com
    ServerAlias www.foo.com
    ErrorLog /etc/httpd/logs/foo.com-error.log
  Include /etc/httpd/conf.d/rewrite_rules/foo.com.rewrite
</VirtualHost>

奇怪的是,当我在测试服务器上使用curl测试时,好像URL被重定向了:

RewriteEngine On
RewriteRule ^/foo$  https://www.bar.com/bar  [R=301,L,NC]
RewriteRule (.*) https://www.bar.com  [R=301,L,NC]

我感觉自己的重写规则中缺少某些内容。谁能建议这个问题?预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

找出此问题的答案。事实证明,到位的规则都是功能性的,可以按预期运行。但是,服务器上的SSL证书导致不匹配错误。

SSL证书中的此不匹配停止了重定向功能。上传必要的证书后,一切都按预期工作。希望这个答案对将来有需要的人有所帮助。谢谢。