J’ai créé un fichier .htaccess, voici le code
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule rudra/example/restapi/(.*)$ rudra/example/restapi/MyAPI.php?request=$1 [QSA,NC,L]
Je veux simplement réécrire l’url
localhost/rudra/example/restapi/asd/asd/asda
à
localhost/rudra/example/restapi/MyAPI.php?request=asd/asd/asda
Je sais que cela fonctionne, j’ai ma réécriture a2enmod est activée et AllowOverride tout sur / var / www / et je crois que Apache lit ce fichier parce que si je fais une erreur ici, il montre erreur 500 erreur de serveur interne et je pense que ma réécriture règle est également juste, mais certains comment il est incapable de réécrire url
dans apache2 / error.log
[error] [client 127.0.0.1] File does not exist: /var/www/rudra/example/restapi/example
Est-ce que je fais une erreur ou oublie quelque chose?
Vous ne pouvez pas utiliser le drapeau NC dans une RewriteRule
, enlevez-le et vous irez bien. En outre, vous devez définir le RewriteBase sur /
comme ceci:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule rudra/example/restapi/(.*)$ rudra/example/restapi/MyAPI.php?request=$1 [QSA,L]
Assurez-vous également qu’il n’y a pas d’espace entre les crochets []
il y avait l’erreur dans la rewriterule, voici le code final
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ rudra/example/restapi/MyAPI.php?request=$1 [QSA,NC,L]
Je suppose que cette RewriteBase était également manquante.
merci jonan