Comment convertir ce .htaccess très simple en Nginx?
May 20 2019
J'utilise ceci .htaccessqui passe tout après l'URL à $param, donc
example.com/news/idva à PHP comme $_GET['param']='news/id'. Mais Nginx me jette toujours à la page 404.
Mon .htaccess:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule (.*) index.php?param=$1
Ce que j'ai essayé dans Nginx default.conf:
server {
listen 80;
listen [::]:80;
server_name domain.com;
root /var/www/html;
location / {
if (!-f $uri){
set $rule_0 1$rule_0;
}
if (!-d $uri){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite ^(.*) index.php?param=$1;
}
}
}
Réponses
1 MichaelHampton May 20 2019 at 09:08
Vous n'utilisez pas du tout ifici, ni ne vérifiez manuellement l'existence de fichiers. Ce modèle commun est géré à la place par try_files.
Par exemple:
location / {
try_files $uri $uri/ /index.php?param=$uri;
}
(Si votre application Web est défectueuse et ne peut pas gérer le début /de l'URI, corrigez l'application Web si possible, ou consultez cette question dans le cas contraire.)
1 SandroBenevides May 21 2019 at 01:15
Je pourrais le réparer en utilisant ces règles:
server{
try_files $uri $uri/ @rewrite;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=$1;
}
}
Si vous avez l'emplacement / {} sans aucune instruction à l'intérieur, supprimez-le.