2016-10-10 2 views
0

Ich habe Probleme damit. Ich möchte, dass die URL von "index.php? Page = somepage" neu geschrieben wird, um auf "somepage" geschrieben zu werden.Nginx rewrite index.php? Seite = Kontakt, nur um zu kontaktieren

Dies ist, wie es in .htaccess war, wenn es

Block
RewriteEngine on 
RewriteRule ^(\w+)$ index.php?page=$1 [L,NC,QSA] 
RewriteRule ^(\w+)+\/$ index.php?page=$1 [L,NC,QSA] 

Server hilft:

server { 
     listen 80; 
     listen [::]:80; 
     server_name domain.com; 

     root /home/www/domain.com; 

     index index.php index.html index.htm; 

     location/{ 
       try_files $uri $uri/ =404; 
     } 

     location ~ \.php$ { 
       try_files $uri =404; 
       rewrite ^/(w+)$ /index.php?page=$1 last; 
       rewrite ^/(w+)+/$ /index.php?page=$1 last; 
       fastcgi_pass unix:/var/run/php5-fpm.sock; 
       fastcgi_index index.php; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
       include fastcgi_params; 

     } 
} 
+0

Bieten Sie Ihren ganzen 'server' Block bitte. Wenn ich den Kommentar zu der Frage unten anschaue, würde ich vorschlagen, dass etwas anderes vor sich geht. –

+0

@JoeDoherty Der Frage wurde der Serverblock hinzugefügt. –

+0

nicht umschreiben, wird es immer noch funktionieren, versuchen Sie, die zwei Rewrite-Befehle in PHP-Block zu entfernen. – Satys

Antwort

0

Versuchte .htaccess mit Konverter und dieses Stück Code nginx scheint zu funktionieren:

rewrite ^/(w+)$ /index.php?page=$1 last; 
rewrite ^/(w+)+/$ /index.php?page=$1 last; 

Edit: Ich übermäßig komplizierte Dinge durch das Nachdenken über. Die Lösung, was ich versuche zu tun, ist dies:

location/{ 
    try_files $uri $uri/ /index.php?page=$uri; 
} 
1

Bitte versuchen Sie den folgenden Code,

server { 
    ... 
    rewrite ^/index.php?page=(.*) /$1 permanent; 
    ... 
    location ~ /(.*) { 
     try_files $uri $uri/ /index.php?page=$1; 
    } 

    location ~ \.php { 
     ... 
     try_files $uri =404; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include fastcgi_params; 
     ... 
    } 
    ... 
} 
+0

Es funktioniert fast. Ich muss den tatsächlichen Wert auch von dem Seitenparameter erhalten. Derzeit benutze '$ _GET' und ich bekomme ein leeres Array. –

+0

Weitere Überprüfung, sind Sie sicher, dass die Rewrite-Regel nicht umgekehrt werden sollte? Also werden URLs wie '/ contact' als' index.php? Page = contact' verarbeitet, so dass der Benutzer tatsächlich '/ contact' sieht? –