Mon problème est que lorsque je $_GET['decode']
http://example.com/admin/
cela fonctionne bien, $_GET['decode']
contient des informations correctes et je peux les $_GET['decode']
. Mais lorsque j’entre dans http://example.com/admin
(sans barre oblique), mon URL redirige vers http://example.com/admin/?decode=admin
et tout est falsifié. Quelqu’un pourrait-il m’aider?
Voici mon .htaccess
:
RewriteEngine on Options +FollowSymlinks Order Allow,Deny Deny from all Header set X-UA-Compatible "IE=Edge,chrome=1" RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L] RewriteCond %{REQUEST_URI} !(/$|\.) RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] RewriteRule ^([^\.]+)$ ./index.php?decode=$1 [L,QSA] php_value date.timezone "Europe/Bratislava"
C’est parce que mod_dir
ajoute une barre oblique dans l’URI du répertoire ( /admin
) après que votre dernière règle ait été exécutée par mod_rewrite
.
Essayez ce code:
DirectorySlash Off RewriteEngine on Options +FollowSymlinks Order Allow,Deny Deny from all Header set X-UA-Compatible "IE=Edge,chrome=1" RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ http://%1%{REQUEST_URI} [R=301,NE,L] ## Adding a trailing slash RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{THE_REQUEST} \s/+(.*?)[^/][?\s] RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/?$ ./index.php?decode=$1 [L,QSA] php_value date.timezone "Europe/Bratislava"