如何解决太多重定向问题 - htaccess

How to solve too many redirects problem - htaccess

最近我对我的 API 域路径做了一个小改动,我不想更新我的应用程序,我想使用 .htaccess 文件解决 URL 问题.

我当前的 API 域名是:https://api.example.com

我需要重定向到 https://api.example.com/en/

我 API

但是我现在的Englsh API只有https://api.example.com,我需要加上/en/

如果它已经是 /ar/ 那么不需要做任何事情。

如果访问域只有https://api.example.com,我想重定向到https://api.example.com/en/

因为在我直接从域提供我的 API 的英文版本之前,但现在我已经将其分离为 en - 英语和 ar 阿拉伯语。

我的代码:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^api.example.com [NC]
RewriteRule ^(.*)$ https://api.example.com/en/ [R=301,L]

错误:

ERR_TOO_MANY_REDIRECTS

在地址栏我可以看到

http://api.example.com/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/

我该如何解决这个问题?

您需要检查所请求的 URL-path 是否已经以 /en//ar/ 开头。例如:

RewriteCond %{HTTP_HOST} ^api\.example\.com [NC]
RewriteCond %{REQUEST_URI} !^/(en|ar)/
RewriteRule ^(.*)$ https://api.example.com/en/ [R=301,L]

或者,

RewriteCond %{HTTP_HOST} ^api\.example\.com [NC]
RewriteRule !^(en|ar)/ /en%{REQUEST_URI} [R=301,L]

旁白: 因为这是一个“API”,请求是否需要遵循重定向?