Je pense que vous voulez juste quelque chose comme ça, bien que Pekka mentionné il est un peu difficile de savoir avec certitude sans plus de détails:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/[A-Z][a-z]+$
RewriteRule ^/?([A-Za-z])([A-Za-z]+)$ http://www.example.com/${toupper:$1}${tolower:$2} [L,R]
Gardez à l'esprit que vous devez réellement avoir les cartes toupper
et tolower
défini dans la configuration de votre serveur, ce qui n'est pas possible si vous n'avez aucun contrôle sur le serveur ou sur la définition de votre hôte virtuel.
httpd.conf
ou un hôte virtuel:
RewriteMap toupper int:toupper
RewriteMap tolower int:tolower
Comme une note de côté, je suis assez confus pourquoi les fonctions de carte interne de mod_rewrite
doivent être explicitement déclarés, mais c'est ce que le code dit (et ce que le la documentation ne mentionne pas), alors voilà.
Modifier: Capitaliser un ou plusieurs mots dans une chaîne délimitée par des espaces, nous pouvons le faire:
RewriteEngine On
RewriteCond $1 (.*)((?:\s|\A)[A-Za-z])([A-Za-z]+)$
RewriteCond $1 !^(\s?[A-Z][a-z]+)+$
RewriteRule /?(.*) %1 [N,E=CC_URL:${toupper:%2}${tolower:%3}%{ENV:CC_URL}]
RewriteCond %{ENV:CC_URL} !=""
RewriteRule .* http://www.example.com/$0%{ENV:CC_URL} [L,R]
je aimerais bien tester celui-ci avant de le laisser courir dans la nature même. Je suis à peu près certain que cela devrait fonctionner correctement, mais puisqu'il y a une possibilité que cela provoque une boucle infinie et que l'un de vos enfants httpd
devienne incontrôlable ... utilisez-le avec prudence.
Modifier: Oups, j'ai réalisé que la deuxième condition ne fonctionnerait pas si une partie de l'URL était réellement formatée correctement. Je l'ai changé pour être plus fiable maintenant.
Est-ce que cela s'applique à * n'importe quel * nom de répertoire, ou avez-vous une liste de noms quelque part? Si oui, où? S'il vous plaît donner plus d'informations. –
Hey Pekka - Merci d'avoir répondu. J'ai fait cette chose amicale de SEO. À l'origine, une page qui ressemblait à mysite.com/product.php?id=1 ressemblait maintenant à mysite.com/James. J'ai utilisé ce qui suit pour le faire: RewriteRule^(. *)/(. *) $ Destination.php? Id = $ 1 & tab = $ 2 – Arjun