首页 > 解决方案 > 路由api时.htaccess 500内部服务器错误

问题描述

我目前在本地的 apache 服务器上运行 php,带有 React 前端。

这就是我当前.htaccess的布局方式:

Options -MultiViews
    RewriteEngine On
    RewriteRule ^api/(.*)$ api/$1\.php [L]
    RewriteCond %{REQUEST_URI} !^/api.*?
    RewriteRule ^ index.html [QSA,L]

最根本的条件是路由可以在我的 React 应用程序中工作。然后我将生产版本复制到我的 htdocs 中。

路由有效,但是,我希望能够在不使用文件扩展名的情况下/api调用目录中的 .php 文件。所以我希望之后的任何内容都被重定向到输入的内容,然后是./api/.php

例如/api/authentication会去/api/authentication.php/api/register会去/api/register.php,等等。

使用此当前设置,我在向/api/authenticationetc发出请求时收到 500 内部服务器错误。

我的.htaccess文件有问题吗?

标签: reactjsregexapache.htaccessmod-rewrite

解决方案


您的第一条规则是在匹配时循环.*。您可以使用:

Options -MultiViews
RewriteEngine On

RewriteRule ^index\.html$ - [L,NC]

RewriteCond %{REQUEST_URI} !\.php$ [NC]
RewriteRule ^api/(.+)$ api/$1.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^api index.html [L,NC]

RewriteCond %{REQUEST_URI} !\.php$ [NC]当 URI 以 . 结尾时将跳过重写.php


推荐阅读