我在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>
答案 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)