Konvertieren von htaccess in Nginx ReWrite (automatische Konvertierung funktioniert nicht)

Jul 25 2020

Hallo, kennt zufällig jemand die Nginx-Umschreibungsregeln?

Ich versuche, diesen Apache .htaccess in Nginx Rewrite zu konvertieren, ich habe es bereits mit Online-Konvertern versucht

Die Startseite und das Dashboard funktionieren nach dem Einloggen einwandfrei, aber die Bereiche: Nachrichten, Liste, Video, Musik, Umfragen und Quiz funktionieren nicht, sie geben 404 aus

Ich habe 32 Stunden ununterbrochen ohne Schlaf, um den Server einzurichten, das macht mich verrückt

jede mögliche Hilfe würde sehr geschätzt

Hier ist der Apache .htaccess, den ich konvertieren möchte:

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>

Hier ist die automatisch konvertierte Datei (teilweise funktionsfähig, nach einigen meiner Ausgaben, basierend auf 3 Stunden Lesen von Nginx Docs)

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

Wenn ich in der Frage einen Fehler gemacht habe; Bitte verzeihen Sie mir, ich bin kaum wach, ich bin ein Elektronikingenieur und versuche, ein Server-Front- und Backend für meine IoT-Geräte einzurichten. Ich bin kein Programmierer, aber ich bewundere sie sehr, habe einige grundlegende WebDeV gelernt, aber dies ist mein erstes Mal mit Nginx. Codierung ist nicht meine Stärke und nicht jeder war freundlich zu mirhttps://stackoverflow.com/questions/63078446/converting-htaccess-to-nginx-rewrite-autoconverting-not-working?noredirect=1#comment111550833_63078446

Jede Hilfe wäre sehr dankbar Vielen Dank im Voraus

Antworten

1 TeroKilkanen Jul 25 2020 at 17:28

Sie sollten diesem Muster für Ihre Abschnitte folgen:

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

Diese Art, Orte zu schreiben, ist leichter zu lesen und zu verstehen, und man braucht keine bösenif Aussagen .

Man muss auf die Reihenfolgelocation der Abschnittsverarbeitung achten .