Définition de la règle htaccess pour nginx

0

Salut, im problème lors de la définition de la règle htaccess dans nginx. Mon htaccess est:

Les règles de htaccess sont:

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

Je l'ai converti comme ça:

if (!-f $request_filename){
        set $rule_0 1$rule_0;
}
if (!-d $request_filename){
        set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
        rewrite /.* /index.php/$request_uri last;
}

J'ai lu que si c'est mal pour nginx mais je ne comprends pas ces règles. Mon application que je suis en train de configurer est:

http://products.cogzidel.com/airbnb-clone/

Maintenant, la règle est utile lorsque nous essayons d'accéder à la zone d'administration. Nous y accédons en écrivant / administrateur en url et les règles prennent cela comme entrée pour index.php et nous nous connectons à cela. Mais après avoir appliqué cette règle, je vois dans le journal que l'erreur 404 vient. Permettez-moi de mentionner que nginx vhost recharge correctement après cette règle et que j'ai ajouté cette règle dans la zone du serveur et dans la zone de loxation également mais sans succès

Waqas Khan
la source
1
N'utilisez pas les outils de conversion en ligne apache-> nginx. Ils produisent une configuration indésirable comme celle de la question. Vous avez seulement besoin try_filesde ce qui est demandé.
AD7six

Réponses:

2

Vous souhaitez consulter les blocs d'emplacement http://nginx.org/en/docs/http/ngx_http_core_module.html#location et les directives try_files http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files

Par exemple, si vous regardez le blog wordpress (un exemple assez complet) http://wiki.nginx.org/WordPress, vous verrez ceci:

 location /wordpress {
    try_files $uri $uri/ /wordpress/index.php?$args;
 }

 location ~ \.php$ {
    fastcgi_split_path_info ^(/wordpress)(/.*)$;
 }

qui dit "essayez le fichier directement dans / wordpress, sinon transmettez-le à index.php pour le traitement".

Stefancarlton
la source
0

Merci beaucoup d'avoir donné une idée sur les fichiers d'essai. J'ai travaillé dessus et entré ce bloc à l'emplacement: try_files $ uri $ uri / /index.php;

Cela a fonctionné et je ne peux pas accéder à http://my.url.com/administrator

De plus, le lien de pile mentionné ci-dessous est le meilleur moyen de comprendre les fichiers d’essai, ce qui m’a également aidé.

https://stackoverflow.com/questions/17798457/how-can-i-make-this-try-files-directive-work

Waqas Khan
la source