2016-08-09 204 views
1

Ich benutze .htaccess in Apache2, es funktioniert gut.Wie kann ich Nginx umschreiben?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([A-Za-z0-9_]+)$ profile.php?username=$1 

und jetzt benutze ich Nginx Rewrite, in sites-available, mache ich diese Config

server { 
listen 80; 
server_name domain.com; 
root /home/domain; 
index index.html index.htm index.php; 
location/{ 
    rewrite "^([A-Za-z0-9_]+)$" profile.php?username=$1 last; 
} 
location ~ \.php$ { 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_pass unix:/var/run/php5-fpm.sock; 
    fastcgi_index index.php; 
    include fastcgi_params; 
} 
location ~ /\.ht { 
    deny all; 
} 
} 

aber es funktioniert nicht, es zeigt 404 Not Found, können Sie mir helfen, die Fehler? Vielen Dank.

Antwort

0

Es gibt ein Problem mit der Neuschreibungsübersetzung. Überprüfen Sie diese aktualisierte Übersetzung in diesem Code.

server { 
listen 80; 
server_name domain.com; 
root /home/domain; 
index index.html index.htm index.php; 
location/{ 
if (!-e $request_filename){ 
rewrite ^/([A-Za-z0-9_]+)$ /profile.php?username=$1; 
} 
} 
location ~ \.php$ { 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_pass unix:/var/run/php5-fpm.sock; 
    fastcgi_index index.php; 
    include fastcgi_params; 
} 
location ~ /\.ht { 
    deny all; 
} 
} 
+0

danke Ihnen so sehr, können Sie, warum hier erklären verwenden sollte 'if (! $ -e REQUEST_FILENAME) {', in .htaccess, it% verwenden 'RewriteCond {REQUEST_FILENAME}! -f' und' RewriteCond% {REQUEST_FILENAME}! -d'. – yeleko