2017-05-06 57 views
2

我有什么可能是一个相对简单的问题,但我似乎在寻找错误的东西,因为我一直无法找到任何具体的需求,我没有足够的经验主题成功实施我在我的背景下发现的内容。URL映射与Azure和PHP

我必须托管在微软Azure一个PHP的网站,目前有几个文件,如index.php的,About.php,SomeService.php等,能明显通过网址来访问,如

myazurehost.net/SomeService.php 

但是,我希望能够操纵URL映射,原因有两个。
首先,更重要的是,我希望能够建立目录,例如

myazurehost.net/ServiceGroup/SomeService 

由于这将是一个很多比具有独立的文件,如

myazurehost.net/SomeService.php 
myazurehost.net/AnotherService.php 

随着整洁和更易于维护由于显而易见的原因这是不希望的。

其次我想是能够改变的目录,例如,如果用户访问的URL

myazurehost.net/SomeService 

他们看到SomeService.php的页面,如目前正在访问/ SomeService将导致404 SomeService与SomeService.php不同。

我相信我需要使用相当于Apache的.htaccess系统,但是除非我误以为这不适用于Azure。

回答

1

那么,Azure Web Apps使用IIS来托管您的应用程序。 Apache的.htaccess系统最好的等价物实际上是使用web.config文件来处理IIS中的URL重写。

例如,您可以将以下web.config文件放入您的Web应用程序的根文件夹中以隐藏.php扩展名。欲了解更多信息,请参阅https://www.saotn.org/iis-url-rewrite-hide-php-extension

<?xml version="1.0" encoding="UTF-8" ?> 
<configuration> 
    <system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="hide .php extension" stopProcessing="true"> 
      <match url="(.*)" /> 
      <conditions> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
      </conditions> 
      <action type="Rewrite" url="{R:1}.php" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 
+0

这是否意味着要走好?我创建了一个与之匹配的web.config文件,它意味着找不到index.php。 – Potatosaurus

+0

我已经更新了我的回复,添加了''标签。请再试一次。 –