1 votes

.htaccess redirige les répertoires vides vers index.php mais affiche le nom de la fonction au lieu de l'exécuter

Bonjour, j'ai un serveur LEMP et j'ai utilisé le fichier .htaccess ci-dessous pour rediriger les répertoires vides vers index.php, mais le problème est qu'il n'exécute pas le code dans index.php, il se contente d'imprimer le Array()

fichier .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?path=$1 [NC,L,QSA]

configuration du serveur nginx

server {
        listen 80;
        root /storage/html/stream;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name stream.example.com;
        include snippets/phpmyadmin.conf;

        location / {
                try_files $uri $uri/ =404 /rest/index.php?$args;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }

}

emplacement phpMyAdmin que j'ai inclus dans mon bloc serveur

location /phpmyadmin {
    root /storage/html/stream/;
    index index.php index.html index.htm;
    location ~ ^/phpmyadmin/(.+\.php)$ {
        try_files $uri =404;
        root /storage/html/stream/;
        fastcgi_pass unix:/run/php/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

    location ~ ^/phpmyadmin/(doc|sql|setup)/ {
           deny all;
    }

    location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)) {
        root /storage/html/stream/;
    }
}

Et voici mon fichier index.php

`

Voici la sortie pour http://stream.example.com/rest/?path=video/server

Array
(
    [path] => video/server
)
{"authorization":0,"error":1,"result":0,"message":"Token is invalid."}

Et voici la sortie pour http://stream.example.com/rest/video/server

Array ( ) 

mais ils devraient tous les deux me donner cette sortie:

Array ( [path] => video/server/ )

Est-ce que quelqu'un peut m'aider avec ce problème ?

`

2 votes

.htaccess est un fichier de configuration Apache et vous semblez utiliser Nginx.

0 votes

"Le problème est que le code dans index.php n'est pas exécuté, il se contente d'imprimer le Array()" - Il exécute le code dans index.php, sinon il ne "imprimerait pas Array()". Vous ne transmettez tout simplement pas les informations attendues à votre script. $args est vide. path=$uri est "plus proche" de ce que vous attendez. '=404 dans la directive try_files semble être redondant (et dans le mauvais ordre).

1voto

Ali Nikkhah Points 21

Enfin, j'ai transféré le fichier index.php à la racine du serveur et j'ai résolu ce problème en ajoutant index.php?$uri à mon try_files et oui, le fichier .htaccess ne fonctionnait pas du tout

Mais j'ai une question, si je veux avoir mon index.php dans un sous-répertoire, que dois-je faire ?

En passant, le nom de ce type de configuration est Front Controller et vous pouvez rechercher à ce sujet sous ce nom

Merci

0 votes

"j'ai mon index.php dans un sous-répertoire" - il ne devrait pas y avoir de problème avec cela; quel problème rencontrez-vous?

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