2017-05-06 117 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

我已經更新了我的回覆,添加了''標籤。請再試一次。 –