You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure PHP Web App中移除.php后缀?.htaccess规则无效求助

在Azure PHP Web App中移除.php后缀的解决方案(针对你的.htaccess规则未生效问题)

我来帮你搞定这个问题——你用的.htaccess规则没生效,大概率是Azure Web App的环境特性导致的,毕竟它分Linux和Windows两种部署计划,处理URL重写的方式完全不一样。我给你分情况一步步来解决:

情况1:你的Web App是Linux计划(Apache环境)

如果是Linux环境,.htaccess理论上是支持的,但可能有几个配置环节没到位:

  • 先确认.htaccess的位置和权限
    确保这个文件放在网站的根目录(也就是你部署代码的/site/wwwroot文件夹下),Azure部署代码后默认权限是没问题的,但如果是手动上传的,记得检查文件是否设置为可读。

  • 开启Apache的.htaccess覆盖权限
    Azure Linux的Apache默认可能限制了目录的AllowOverride配置,导致.htaccess规则不生效。你需要自定义Apache配置来开启:

    1. 在代码根目录创建.config/apache2/文件夹(注意前面的点,是隐藏文件夹)
    2. 在这个文件夹里新建httpd.conf文件,写入以下内容:
      <Directory /home/site/wwwroot>
          AllowOverride All
          Require all granted
      </Directory>
      
    3. 重启你的Web App,让新配置生效。
  • 调整Rewrite规则(可选但推荐)
    你的现有规则逻辑是对的,但加上L标志可以确保规则执行后终止后续处理,避免冲突:

    RewriteEngine On
    # 跳过实际存在的目录
    RewriteCond %{REQUEST_FILENAME} !-d
    # 确认对应的.php文件确实存在
    RewriteCond %{REQUEST_FILENAME}\.php -f
    # 重写请求到目标.php文件,L标志表示终止后续规则
    RewriteRule ^(.*)$ $1.php [L]
    

    要是希望访问根域名直接跳转到index.php,可以再加一行:

    DirectoryIndex index.php
    

情况2:你的Web App是Windows计划(IIS环境)

Windows计划下IIS根本不认.htaccess,得用web.config来配置URL重写。你需要在网站根目录创建web.config文件,粘贴以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Remove PHP Extension" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions>
            <!-- 忽略实际存在的目录 -->
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <!-- 忽略实际存在的非PHP文件 -->
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <!-- 确保对应的.php文件存在 -->
            <add input="{REQUEST_FILENAME}.php" matchType="IsFile" />
          </conditions>
          <action type="Rewrite" url="{R:1}.php" />
        </rule>
      </rules>
    </rewrite>
    <!-- 设置默认首页为index.php -->
    <defaultDocument>
      <files>
        <add value="index.php" />
      </files>
    </defaultDocument>
  </system.webServer>
</configuration>

创建好之后重启Web App,再访问不带.php后缀的路径,就能正常映射到对应的PHP文件了。

最后给你几个测试小技巧

  • 测试前清空浏览器缓存,避免旧缓存干扰结果
  • 先拿一个确定存在的PHP文件测试,比如访问yourdomain.com/test(对应test.php),看是否能正常加载
  • 如果还是不行,去Azure Portal的「监控」→「日志流」里看日志,里面会有重写相关的错误信息,能帮你快速定位问题

内容的提问来源于stack exchange,提问作者James_Inger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:24:21