1 votes

Comment répliquer ma fonctionnalité .htaccess dans NGINX ?

J'ai ce qui suit .htaccess dans apache qui redirige toutes les requêtes vers app/index.php avec ou sans GET paramètre. Je viens d'installer NGINX et mon application ne fonctionne pas. Est-ce que quelqu'un peut m'aider à reproduire la même fonctionnalité dans NGINX ? Je vous remercie.

RewriteEngine on    

Options -Indexes

RewriteRule    ^$ app/ [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ app/index.php?url=$1 [QSA,L]

3voto

Emil Vikström Points 542

Utiliser le module de réécriture . Quelque chose comme cela devrait suffire :

location / {
  autoindex off;

  rewrite ^/$ app/ last;
  if (!-e $request_filename) {
    rewrite ^/(.*)$ app/index.php?url=$1;
  }
}

2voto

AD7six Points 2740

Utiliser des fichiers d'essai

Il n'est pas nécessaire d'utiliser le module de réécriture pour la plupart de ces configurations.

Les règles de réécriture d'Apache signifient :

  • RewriteRule ^$ app/ [L] - envoyer l'url / au répertoire de l'application
  • RewriteCond %{REQUEST_FILENAME} !-d - si la demande n'est pas un dir
  • RewriteCond %{REQUEST_FILENAME} !-f - si la demande n'est pas un fichier
  • RewriteCond %{REQUEST_FILENAME} !-l - si la demande n'est pas un lien symbolique
  • Envoyez ensuite la demande à app/index.php?url=$1

Dans nginx, l'équivalent est :

# No automatic directory listings
autoindex off;

# Send the root url to the app dir
index index.php;
rewrite ^/$ app/ last;

# check if the url matches a file, directory and if not send to app/index.php
try_files $uri $uri/ app/index.php?url=$uri;

La vérification d'un lien symbolique est superflue puisqu'un lien symbolique est également un fichier ou un répertoire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X