htaccess (pas de redirection) [REWRITEURL] (dossier sur index.php)
Question
Je veux juste obtenir une redirection rapide de htaccess. c'est-à-dire:
domain.com/subfolderGreen - > domain.com/index.php?folder=subfolderGreen
(notez que le sous-dossier Green existe réellement)
J'ai essayé mais je n'ai pas pu obtenir l'expression régulière nécessaire.
merci a.
ajouté:
Désolé, je souhaite que cela fonctionne pour tous les sous-dossiers, et pas seulement "subfolderGreen". J'utilise
RewriteRule ^ / ([^ /] +) /? $ /index.php?folder=$1 [L]
mais ça ne marche pas. des indices?
La solution
Je pense que votre exemple provoquerait une boucle sans fin puisque /index.php correspond à ce que vous faites. Essayez ceci:
RewriteRule ^([A-Za-z0-9]+)/?$ /index.php?folder=$1 [L]
Si vous voulez que cela fonctionne pour tous les répertoires existants, cela fonctionnera probablement aussi.
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)/?$ /index.php?folder=$1 [L]
Autres conseils
RewriteRule ([^/]+)$ index.php?folder=$1
Je pense que cela fera l'affaire.
RewriteRule présente des problèmes déroutants lorsqu’il est utilisé dans .htaccess, ce qui nécessite l’ajout d’un RewriteBase.
Quelles erreurs / problèmes voyez-vous? Si vous voulez être sûr de la façon dont il redirige, ajouter un [R] peut souvent aider au débogage.
Enfin ... le sous-dossierGreen existe-t-il vraiment ou pas? S'il existe, cela pourrait causer des problèmes.
Je crois que c'est:
RedirectMatch 301 domain.com/(.*) domain.com/index.php?folder=$1
RewriteEngine on
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /(([^/\ ]+/)*)/+([^\ ]*)
RewriteRule ^ /%1%3 [L,R=301]
RewriteRule ^([^/]+)/?$ index.php?folder=$1 [L]
La ligne 2 traitera le cas si quelqu'un accède à website.com/mypage/////, la valeur par défaut sera donc website.com/mypage/ à la place (je pense)