.htaccess Htaccess重定向不工作,服务器错误

z9zf31ra  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(131)

我正面临一个问题500服务器错误,我尝试重定向用户到一个不同的URL取决于他的原籍国使用.htaccess文件和GEOIP,我使用Codeigniter 3.
错误500:Is [Fri Jul 15 15:37:32.432374 2022] [core:error] [pid 3029:tid 140071902476032] [client 86.235.179.208:0] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
我想这样做:https://example.com ----〉https://example.com/fr/
下面是添加代码前的脚本:

RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]

添加代码后:

RewriteEngine On
    RewriteCond %{HTTP:X-FORWARDED-COUNTRY} ^France$
    RewriteRule ^([^/]+)$ /fr/ [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]

提前感谢您的帮助。

uyhoqukh

uyhoqukh1#

这些评论表明你实际上是在试图以一种特定于国家的方式重定向请求。
看看这个稍微修改过的变体:

RewriteEngine On

RewriteCond %{HTTP:X-FORWARDED-COUNTRY} ^France$
RewriteCond %{REQUEST_URI} !^/fr/
RewriteRule ^ /fr%{REQUEST_URI} [R=301,END]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /index.php?%{REQUEST_URI} [L]

修改实际上应该在外部重定向请求,* 不带 * /fr/前缀(如果适用的话)。重写循环被阻止,因为如果它已经在以前的往返中被应用,则额外的条件阻止重定向。不是我没有测试过这个,我只是在这里粗略地画了一下。您可能需要根据您的特定设置来调整它。
记住总是使用一个新的匿名浏览器窗口进行测试。使用R=302 * 临时 * 重定向也是一个好主意,只有在你满意的时候才把它改为R=301 * 永久 * 重定向。这样可以防止客户端出现讨厌的缓存问题。
您可以在http服务器的主机配置中实现这些规则。如果您没有访问权限,您也可以使用一个 distributed 配置文件(“.htaccess”),该文件应该位于http主机的DOCUMENT_ROOT文件夹中。

相关问题