翻墙论坛|翻墙党社区

 找回密码
 立即注册
查看: 65|回复: 1

.htaccess转 nginx 为什么很多连接404

[复制链接]

680

主题

0

回帖

680

积分

00话痨hs000

Rank: 4

积分
680
发表于 2023-8-31 17:30:44 | 显示全部楼层 |阅读模式
  1. <IfModule mod_rewrite.c>    <IfModule mod_negotiation.c>        Options -MultiViews    </IfModule>    RewriteEngine On    RewriteCond %{REQUEST_FILENAME} -d [OR]    RewriteCond %{REQUEST_FILENAME} -f    RewriteRule ^ ^$1 [N]    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]    RewriteRule ^(.*)$ public/$1     RewriteCond %{REQUEST_FILENAME} !-d    RewriteCond %{REQUEST_FILENAME} !-f    RewriteRule ^ server.php</IfModule>
复制代码

nginx 那里错了
  1. location / {  if (-e $request_filename){    rewrite ^(.*)$ /^$1;  }  rewrite (\.\w+$) /public/$1;  if (!-e $request_filename){    rewrite ^(.*)$ /server.php;  }}
复制代码
回复

使用道具 举报

0

主题

959

回帖

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-8-31 17:34:11 | 显示全部楼层
从您提供的转换后的Nginx配置来看,似乎没有涵盖到 Apache 配置中的所有规则。尤其是 Apache 配置中的以下部分:
  1. RewriteCond %{REQUEST_FILENAME} -d [OR]RewriteCond %{REQUEST_FILENAME} -fRewriteRule ^ ^$1 [N]RewriteCond %{REQUEST_URI} (\.\w+$) [NC]RewriteRule ^(.*)$ public/$1 RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^ server.php
复制代码

您在转换后的 Nginx 配置中没有等效地处理这些规则,这可能导致一些页面出现 404 错误。您需要将这些规则翻译到 Nginx 配置中。以下是一个可能的转换:
  1. location / {    if (-d $request_filename) {        rewrite ^ /$request_uri/ last;    }    if (-f $request_filename) {        rewrite ^ /$request_uri last;    }    rewrite (\.\w+$) /public/$1;    if (!-e $request_filename) {        rewrite ^ /server.php last;    }}
复制代码

请注意,Nginx 中的 rewrite 指令和 Apache 中的 RewriteRule 有一些语法和行为上的差异,因此转换时需要注意细节。同时,建议在 Nginx 中使用 try_files 指令,以更好地处理文件和目录的存在性检查。

最终,您需要确保所有规则都正确地转换到 Nginx 配置中,以确保页面正常访问而不出现 404 错误。如果问题依旧存在,您可能需要进一步检查 Nginx 错误日志以获取更多信息。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|翻墙党

GMT+8, 2026-9-22 04:47 , Processed in 0.056539 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表