azure app url中的.htaccess文件重写

时间:2016-06-11 12:09:47

标签: php azure iis url-rewriting

我有一个用Php angular mySql开发的单页面应用程序。它使用rest api类从mysql db获取数据。

应用程序在cPanel(linux)的共享主机中正常工作。我在Azure应用服务中复制了文件,但我无法使其工作。我收到以下消息:

  

由于发生内部服务器错误,无法显示页面。

我知道它正在运行IIS并且IIS不支持重写url的.htaccess文件。

.htaccess的内容是:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ api.php?x=$1 [QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ api.php [QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^(.*)$ api.php [QSA,NC,L]   
</IfModule>

如果已经做了一些研究并将.htaccess更改为web.config但仍然无法使其工作。

我的web.config是:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
    <sectionGroup name="system.webServer">
        <sectionGroup name="rewrite">
            <section name="rewriteMaps" overrideModeDefault="Allow" />
            <section name="rules" overrideModeDefault="Allow" />
        </sectionGroup>
    </sectionGroup>
</configSections>

<system.webServer>
    <security>

    </security>
    <directoryBrowse enabled="true" />
    <caching>
        <profiles>
            <add extension=".php" policy="DisableCache" kernelCachePolicy="DisableCache" />
            <add extension=".html" policy="CacheForTimePeriod" kernelCachePolicy="CacheForTimePeriod" duration="14:00:00:00" />
        </profiles>
    </caching>
    <rewrite>
    <rules>
    <rule name="rule 1K" stopProcessing="true">
        <match url="^(.*)$"  ignoreCase="true" />
        <action type="Rewrite" url="/php/services/api.php?x={R:1}"  appendQueryString="true" />
    </rule>

        </rules>
    </rewrite>
    <defaultDocument>
        <files>
            <remove value="index.php" />
            <add value="index.php" />
        </files>
    </defaultDocument>



</system.webServer>

1 个答案:

答案 0 :(得分:0)

根据web.config的内容,所有请求都将重写为根目录下的php/services/api.php脚本。那么你能否确保路径中存在脚本。

此外,根据您收到的错误消息,通常,当我们收到此消息时,这意味着您的服务器上的代码有问题。

根据我的经验,也许您会错过PHP脚本中所需的任何依赖项。您可以登录Web应用程序的KUDU控制台站点以检查应用程序的完整性。 Kudu控制台站点的URL应为https://<your_site_name>.scm.azurewebsites.net

任何更新,请随时告诉我。