.htaccess URL重写异常:api_authenticate.php无法重定向至authenticate
解决.htaccess中API URL重写的404问题
你的问题根源在于:当前规则只实现了从旧URL(api/api_authenticate.php)到新URL(/api/authenticate)的301重定向,但没有配置从新URL到实际PHP文件的内部重写。当浏览器被重定向到/api/authenticate后,服务器找不到对应的物理文件或路由,因此返回404错误。
修改后的完整.htaccess配置
Options -MultiViews RewriteEngine On RewriteBase / # 重定向旧API URL到友好URL(添加条件避免循环) RewriteCond %{THE_REQUEST} ^GET\ /api/api_authenticate\.php RewriteRule ^api/api_authenticate\.php$ /api/authenticate [L,R=301] # 其他页面重定向规则 RewriteRule ^index\.php$ / [L,R=301] RewriteRule ^login\.php$ /login [L,R=301] RewriteRule ^logout\.php$ /logout [L,R=301] # 内部重写规则(映射友好URL到实际文件) RewriteRule ^admin/user/([0-9]+)$ admin/user.php?id=$1 [L] RewriteRule ^api/authenticate$ api/api_authenticate.php [L]
关键修改说明
添加重定向条件:
RewriteCond %{THE_REQUEST} ^GET\ /api/api_authenticate\.php
只对用户直接访问api/api_authenticate.php的请求触发重定向,避免内部重写后再次触发规则导致循环。新增内部重写规则:
RewriteRule ^api/authenticate$ api/api_authenticate.php [L]
将/api/authenticate这个友好URL内部映射到实际的api/api_authenticate.php文件,服务器会处理该文件的请求但不会改变浏览器地址栏。
内容的提问来源于stack exchange,提问作者executable
相关产品推荐
相关产品推荐

