通过代码将多个域添加到一个Web应用程序

时间:2016-06-05 15:51:46

标签: php azure url url-rewriting

我在Azure上运行了一个PHP应用程序。我希望我的客户能够在他们自己的域上使用我的应用程序。是否可以将多个域添加到一个Web应用程序中?是否有API或以某种方式以编程方式将域添加到Web应用程序中?

我有一个web.config文件,如下所示,但它没有重定向。

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Rewrite domain requests" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^(www.)?([.a-zA-Z0-9]+)$" />
  </conditions>
  <action type="Rewrite" url="http://www.cemiltokatli.com/url={R:1}" appendQueryString="true" />
</rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

2 个答案:

答案 0 :(得分:0)

为此,您需要将您的网络应用程序移动到共享/标准模式,并且:

1)配置网址重写(如描述here

2)使用 Site.HostNames 属性配置多个域名。该属性可用于设置其他域。不幸的是,我没有PHP代码片段,但下面是使用C#代码(使用SDK实现)。而且,遗憾的是,看起来官方Azure PHP SDK似乎没有提供相同的功能。这里的方法是编写REST API包装器,例如,使用下面的代码段作为参考。如果你方无法执行代码并抓住请求,我可以稍后再做,如果这样做有帮助。

public const string base64EncodedCertificate = "ManagementCertificateValueFromPublishSettingsFile";
public const string subscriptionId = "AzureSubscriptionId";

static SubscriptionCloudCredentials getCredentials()
{
    return new CertificateCloudCredentials(subscriptionId, new X509Certificate2(Convert.FromBase64String(base64EncodedCertificate)));
}
static void Main(string[] args)
{
    WebSiteManagementClient client = new WebSiteManagementClient(getCredentials());

    WebSpacesListResponse n = client.WebSpaces.List();
    n.Select(p =>
    {
        Console.WriteLine("webspace {0}", p.Name);
        WebSpacesListWebSitesResponse websitesInWebspace = client.WebSpaces.ListWebSites(p.Name,
              new WebSiteListParameters()
              {
              });
        websitesInWebspace.Select(o =>
        {
            Console.Write(o.Name);     

            return o;
        }).ToArray();
        return p;
    }).ToArray();

    Console.ReadLine();
    var configuration = client.WebSites.Get("WebSpaceName", "WebSiteName", new WebSiteGetParameters());

    configuration.WebSite.HostNames.Add("new domain");
    var resp = client.WebSites.Update("WebSpaceName", "WebSiteName", new WebSiteUpdateParameters() { HostNames = configuration.WebSite.HostNames });
    Console.WriteLine(resp.StatusCode);
    Console.ReadLine();
}

答案 1 :(得分:0)

如果我不误解您的问题,您希望管理指向您的一个Azure Web App应用程序的多个域。例如。管理domain1.comdomain2.com到同一yourapp.azurewebsites.net

您可以让您的客户在自己的DNS管理服务器上添加您的azure应用程序的CName。 enter image description here

然后,将您的应用程序的应用服务计划扩展到租用共享层。在Azure Web App门户页面的 CONFIGURE 标签中,在域名部分下,将自定义域名添加到列表中。例如。 enter image description here

如有任何疑问,请随时告诉我。