Nginx

將規則從 apache 重寫為 nginx

  • March 1, 2022

我對此有疑問…我正在使用免費託管為我自己的 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

看看這是否能完成這項工作

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;
}

引用自:https://serverfault.com/questions/1095109