htaccessをNginxReWriteに変換しています(自動変換が機能していません)

Jul 25 2020

こんにちは、Nginxの書き換えルールを知っている人はいますか?

このApache.htaccessをNginxRewriteに変換しようとしていますが、すでにオンラインコンバーターで試しました

ログインするとホームページとダッシュボードは正常に機能しますが、ニュース、リスト、ビデオ、音楽、投票、クイズのセクションが機能しません。404が表示されます。

睡眠なしで32時間ノンストップでサーバーをセットアップしているので、頭がおかしくなります

どんな助けでも大歓迎です

これが私が変換したいApache.htaccessです:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^$ index.php?link1=home [NC,QSA] RewriteRule ^news/(.*)$ index.php?link1=news&id=$1 [NC,QSA] RewriteRule ^lists/(.*)$ index.php?link1=lists&id=$1 [NC,QSA] RewriteRule ^polls/(.*)$ index.php?link1=polls&id=$1 [NC,QSA] RewriteRule ^quiz/(.*)$ index.php?link1=quiz&id=$1 [NC,QSA] RewriteRule ^videos/(.*)$ index.php?link1=videos&id=$1 [NC,QSA] RewriteRule ^music/(.*)$ index.php?link1=music&id=$1 [NC,QSA] RewriteRule ^edit-post/(.*)$ index.php?link1=edit-post&id=$1 [NC,QSA] RewriteRule ^delete-post/(.*)$ index.php?link1=delete-post&id=$1 [NC,QSA] RewriteRule ^settings/(.*)/(.*)$ index.php?link1=settings&page=$1&user=$2 [NC,QSA]
RewriteRule ^settings/(.*)$ index.php?link1=settings&page=$1 [NC,QSA]
RewriteRule ^admin-cp$ admincp.php [NC,QSA] RewriteRule ^admin-cp/(.*)$ admincp.php?page=$1 [NC,QSA] RewriteRule ^admincp/(.*)$ index.php?link1=admincp&page=$1 [NC,QSA] RewriteRule ^admin-cdn/(.*)$ admin-panel/$1 [L] RewriteRule ^tags/(.*)$ index.php?link1=tags&tag=$1 [NC,QSA] RewriteRule ^feeds/rss(/?|)$ index.php?link1=feeds&page=home [NC,QSA]
RewriteRule ^post_data/(.*)/(.*)(/?|)$ index.php?link1=post_data&post_type=$1&id=$2 [NC,QSA] RewriteRule ^terms/(.*)$ index.php?link1=terms&type=$1 [NC,QSA] RewriteRule ^go_pro(?:\/{0,1}|)$ index.php?link1=go_pro [NC,QSA]

RewriteRule ^latest-(.*)/(\d+)$ index.php?link1=latest-$1&c_id=$2 [NC,QSA] RewriteRule ^latest-(.*)/rss(/?|)$ index.php?link1=rss&page=$1 [NC,QSA] RewriteRule ^ads(?:\/?|)$ index.php?link1=ads [NC,QSA]
RewriteRule ^ads/create-new(?:\/?|)$ index.php?link1=create_ad [NC,QSA] RewriteRule ^ads/edit/([0-9]+)(?:\/?|)$ index.php?link1=edit_ad&ad_id=$1 [NC,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^@([^\/]+)(\/|)$ index.php?link1=profile&u=$1 [QSA] RewriteRule ^@([^\/]+)(\/|)/(.*)$ index.php?link1=profile&u=$1&page=$2 [QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\/]+)(\/|)$ index.php?link1=$1 [QSA]

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/opentype
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>

これが自動変換されたファイルです(私のエディションのいくつかの後、Nginx Docsを3時間読んだことに基づいて部分的に機能しています)

location / {
  if (!-e $request_filename){ rewrite ^/$ /index.php?link1=home;
  }
  rewrite "^/go_pro(?:\/{0,1}|)$" /index.php?link1=go_pro; if (!-e $request_filename){
    rewrite ^/@([^\/]+)(\/|)$ /index.php?link1=profile&u=$1;
  }
  rewrite ^/@([^\/]+)(\/|)/(.*)$ /index.php?link1=profile&u=$1&page=$2; if (!-e $request_filename){
    rewrite ^/([^\/]+)(\/|)$ /index.php?link1=$1;
  }
}


(**_not working from here and below news, list, video, music, polls and quiz sections_**)

location /news {
  rewrite ^/news/(.*)$ /index.php?link1=news&id=$1;
}

location /lists {
  rewrite ^/lists/(.*)$ /index.php?link1=lists&id=$1;
}

location /polls {
  rewrite ^/polls/(.*)$ /index.php?link1=polls&id=$1;
}

location /quiz {
  rewrite ^/quiz/(.*)$ /index.php?link1=quiz&id=$1;
}

location /videos {
  rewrite ^/videos/(.*)$ /index.php?link1=videos&id=$1;
}

location /music {
  rewrite ^/music/(.*)$ /index.php?link1=music&id=$1;
}

location /edit {
  rewrite ^/edit-post/(.*)$ /index.php?link1=edit-post&id=$1;
}

location /delete {
  rewrite ^/delete-post/(.*)$ /index.php?link1=delete-post&id=$1;
}

location /settings {
  rewrite ^/settings/(.*)/(.*)$ /index.php?link1=settings&page=$1&user=$2; rewrite ^/settings/(.*)$ /index.php?link1=settings&page=$1; } (**_admin panel and the other admin, term, ads, latest,tags and feed and all rest sections below this line work fine_**) location /admin { rewrite ^/admin-cp$ /admincp.php;
  rewrite ^/admin-cp/(.*)$ /admincp.php?page=$1;
}

location /admincp {
  rewrite ^/admincp/(.*)$ /index.php?link1=admincp&page=$1;
}

location /admin-cdn/ {
  alias /admin-panel/;
}

location /tags {
  rewrite ^/tags/(.*)$ /index.php?link1=tags&tag=$1;
}

location /feeds {
  rewrite ^/feeds/rss(/?|)$ /index.php?link1=feeds&page=home; } location /post_data { rewrite ^/post_data/(.*)/(.*)(/?|)$ /index.php?link1=post_data&post_type=$1&id=$2;
}

location /terms {
  rewrite ^/terms/(.*)$ /index.php?link1=terms&type=$1;
}

location /latest {
  rewrite ^/latest-(.*)/(\d+)$ /index.php?link1=latest-$1&c_id=$2; rewrite ^/latest-(.*)/rss(/?|)$ /index.php?link1=rss&page=$1; } location /ads { rewrite ^/ads(?:\/?|)$ /index.php?link1=ads;
  rewrite ^/ads/create-new(?:\/?|)$ /index.php?link1=create_ad; rewrite ^/ads/edit/([0-9]+)(?:\/?|)$ /index.php?link1=edit_ad&ad_id=$1;
}

質問に間違いがあった場合; 私はほとんど目覚めていません。私は電子エンジニアであり、IoTデバイス用にサーバーのフロントエンドとバックエンドをセットアップしようとしています。私はプログラマーではありませんが、彼らを大いに賞賛し、いくつかの基本的なWebDeVを学びましたが、Nginxコーディングを使用するのは初めてですが、私の強みではなく、誰もが私に親切であるとは限りませんhttps://stackoverflow.com/questions/63078446/converting-htaccess-to-nginx-rewrite-autoconverting-not-working?noredirect=1#comment111550833_63078446

どんな助けでも大歓迎ですよろしくお願いします

回答

1 TeroKilkanen Jul 25 2020 at 17:28

セクションでは、次のパターンに従う必要があります。

location / {
    try_files $uri /index.php?link1=home; } location ~ ^/go_pro(?:\/{0,1}|)$ {
    try_files /index.php?link1=go_pro =404;
}

location ~ ^/news/(?<newsid>.*)$ { try_files /index.php?link1=news&id=$newsid =404;
}

場所を書くこの方法は、読みやすく、理解しやすく、邪悪なifステートメントは必要ありません。

locationセクションの処理順序に注意を払う必要があります。