phpMyAdmin et Apache – Chaîne de requête – Erreur 404

Lorsque phpMyAdmin tente d'accéder à l'URL en tant que https://example.com/phpmyadmin/server_variables.php&filter=long_query_time , Apache lance une erreur 404.

Quel pourrait être le problème?

The requested URL /phpmyadmin/server_variables.php&filter=long_query_time was not found on this server. Apache/2.4.27 (Ubuntu) Server at example.com Port 443 

Quand j'ai changé & ? , tout a fonctionné comme un charme. Mon phpmyadmin.conf ressemble à ceci:

 Alias /phpmyadmin "/usr/share/phpmyadmin" <Directory "/usr/share/phpmyadmin"> DirectoryIndex index.php AllowOverride All Options FollowSymlinks Require all granted </Directory> 

.htaccess dans /usr/share/phpmyadmin ressemble à ceci:

 AuthType Basic AuthName "Ressortingcted access!" AuthUserFile /usr/share/phpmyadmin/.htpasswd Require valid-user 

La version de phpMyAdmin est: 4.7.3

Ceci est tout à fait normal, car une URL contient ces composants avec exactement ces délimiteurs:

 scheme://host:port/path?query 

Cela signifie que les URL suivantes sont complètement différentes:

  • https://example.com/phpmyadmin/server_variables.php?filter=long_query_time

    Ici, phpmyadmin/server_variables.php est path et filter=long_query_time requête filter=long_query_time . Apache peut find server_variables.php et passer les variables de cette requête de méthode GET à PHP.

  • https://example.com/phpmyadmin/server_variables.php&filter=long_query_time

    Celui-ci n'a que le path , phpmyadmin/server_variables.php&filter=long_query_time . Parce qu'il n'y a pas de file de ce type, Apache montre l'erreur 404 , comme il est censé le faire.

Le & est, à la place, utilisé comme un délimiteur entre les variables dans une requête, par exemple ?foo=123&bar=456 .