从 apache 到 nginx 重写规则

从 apache 到 nginx 重写规则

我对此有一个问题...我正在使用免费托管来为我自己的 cms 的未来买家提供演示。

托管是 hubuhost.com,他们支持最新版本的 php 8.1。问题是他们使用 nginx,不支持我的 apache 的 htaccess 规则。

我的配置是:

<IfModule mod_negotiation.c>
#Important rules for our system
Options -Multiviews -Indexes +FollowSymLinks
</IfModule>

#app.php instead of index.php
<IfModule mod_dir.c>
DirectoryIndex core.php index.php index.html
</IfModule>

#If 404 - redirect to 404 page
ErrorDocument 404 /404/index.php

<IfModule mod_rewrite.c>
#ModRewrite ON
RewriteEngine on 

#News SEO Urls
RewriteRule  ^topic_(.+?)$ core.php?id=$1

#Router
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ core.php [QSA,L]
 
#remove end trailing slash from urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /(.*)/$
RewriteRule ^ /%1 [R=301,L]
</IfModule>

#Block ENV access
<IfModule mod_version.c>
<Files "config.env">
   Order allow,deny
    Deny from all
</Files>
</IfModule>

有人可以将其转换为 nginx 吗?

我尝试了一些规则,但没有成功。我不知道该怎么办……管理面板的演示图片:https://i.ibb.co/gwZStXN/image.png

答案1

看看这是否能起到作用

autoindex off;

index core.php index.php index.html;

error_page 404 /404/index.php;

location /topic_ {
  rewrite ^/topic_(.+?)$ /core.php?id=$1;
}

location / {
  if (!-e $request_filename){
    rewrite ^(.*)$ /core.php break;
  }
  if (!-e $request_filename){
    rewrite ^(.*)$ /%1 redirect;
  }
}

location /config.env {
  deny all;
}

相关内容