我有一个用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>
答案 0 :(得分:0)
根据web.config的内容,所有请求都将重写为根目录下的php/services/api.php
脚本。那么你能否确保路径中存在脚本。
此外,根据您收到的错误消息,通常,当我们收到此消息时,这意味着您的服务器上的代码有问题。
根据我的经验,也许您会错过PHP脚本中所需的任何依赖项。您可以登录Web应用程序的KUDU控制台站点以检查应用程序的完整性。 Kudu控制台站点的URL应为https://<your_site_name>.scm.azurewebsites.net
。
任何更新,请随时告诉我。