Nginx 301按变量

时间:2016-01-11 15:42:20

标签: nginx http-redirect

我正在为我托管的网站设置301重定向服务器。当我得到一个新客户时,我不想在下面的服务器块中编辑域列表。我想将anydomain-here.com重定向到301 - >而不是nginx配置中的硬编码域。 www.anydomain-here.com

所有裸露的域名(即domain.com)都将重定向到www.domain.com

server {
  server_name domain-requested.com;
  rewrite ^/(.*)$ http://www.domain-requested.com/$1 permanent;
}

在上面的示例中,是否可以将域请求更改为变量?这将允许服务器重定向任何没有子域的站点,例如www。

2 个答案:

答案 0 :(得分:2)

如果使用裸域,您可以使用地图设置变量:

import MessageUI

if MFMailComposeViewController.canSendMail() {
    let mail = MFMailComposeViewController()
    mail.mailComposeDelegate = self
    mail.setToRecipients(["test@test.test"])
    mail.setSubject("Bla")
    mail.setMessageBody("<b>Blabla</b>", isHTML: true)
    presentViewController(mail, animated: true, completion: nil)
} else {
    print("Cannot send mail")
    // give feedback to the user
}


// MARK: - MFMailComposeViewControllerDelegate

func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {
    switch result.rawValue {
    case MFMailComposeResultCancelled.rawValue:
        print("Cancelled")
    case MFMailComposeResultSaved.rawValue:
        print("Saved")
    case MFMailComposeResultSent.rawValue:
        print("Sent")
    case MFMailComposeResultFailed.rawValue:
        print("Error: \(error?.localizedDescription)")
    default:
        break
    }
    controller.dismissViewControllerAnimated(true, completion: nil)
}

答案 1 :(得分:0)

您可以使用Nginx 1.4.6删除至少一个硬编码域名:

 rewrite ^/(.*)$ http://www.$server_name/$1 permanent;

您可以通过将其包含在所有服务器块包含的包含文件中来进一步抽象。您不能仅仅使用Nginx做得更好,因为rewrite上下文中不允许声明http以应用于多个server块。

要考虑的其他一些想法:

  • 使用模板系统管理您的Nginx配置。
  • 许多DNS提供HTTP重定向服务,因此他们的Web服务器将是接收请求并接收重定向的服务器。

我自己使用了上述两种方法。使用DNS提供程序进行HTTP重定向的缺点是它们无法处理传入的SSL请求,但如果您要购买并安装第二个SSL证书来处理HTTPS重定向,那么这只是一个缺点。第二个域自己。