• 日常搜索
  • 端口查询
  • IP查询
  • 在线工具
  • 搜本站

nginx转换成Apache后网页丢失的坑

nginx原网站环境使用了伪静态,伪静态规则写在网站根目录的.htaccess文件中,Apache下默认识别此文件内容,而Nginx服务器不识别.htaccess文件,导致伪静态规则无效,自然无法解析url地址,导致404错误(文件不存在)

方法:

nginx转换成Apache后,把nginx伪静态规则翻译成Apache规则,在.htaccess文件中重新添加伪静态规则如:

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
</IfModule>

这样Apache就能重新获得伪静态规则,恢复正常

同理反过来把Apache伪静态规则翻译成nginx为如下:

if (!-d $request_filename){
    set $rule_0 1$rule_0;
}
if (!-f $request_filename){
    set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
    rewrite ^/(.*)$ /index.php?s=/$1 last;
}

nginx转换成Apache后网页丢失的坑  第1张

发表评论