J'ai le problème suivant. Nous avons utilisé plusieurs URL différentes sur la même page. Maintenant, nous voulons utiliser une seule URL pour ces pages. Voici un exemple:Effectuer une réécriture 301 à partir d'un dossier en utilisant des URL de réécriture relatives
RewriteRule ^(subfolder1/folder1/|(subfolder2|subfolder3)/folder2/|folder3/)?(name1|name2|name3|name4)$ scriptname.php [QSA,NC]
Comme vous pouvez le voir, c'est assez salissant. Ce que je veux maintenant faire est la suivante: Réécrire toutes les URL à une seule de ces URL (par exemple sous-dossier1/dossier1/nom1) en utilisant un 301 et d'utiliser une réécriture sur cette URL pour adresser le script réel. Il pourrait ressembler à ceci:
RewriteRule ^((subfolder2|subfolder3)/folder2/|folder3/)?(name2|name3|name4)$ /subfolder1/folder1/name1 [R=301,QSA,NC]
RewriteRule ^subfolder1/folder1/name1$ script.php [QSA.NC]
Jusqu'à ici, je n'ai pas de problème. Mais maintenant vient la partie délicate. Nous utilisons plusieurs machines de développement sur des machines UNIX et Windows. Ils ont tous des noms d'hôtes et des dossiers différents. Voici quelques exemples:
http://www.example.com (production)
http://test.example.com (testing)
http://localhost/development_folder/ (development WIN)
http://localhost:8888/development_folder/ (development MAC)
La question est que nous avons des sous-dossiers sur les machines de développement, je ne peux pas utiliser une URL absolue /subfolder1/folder1/name1/
comme il le ferait par exemple pointez sur http://localhost/subfolder1/folder1/name1/
et non sur http://localhost/development_folder/subfolder1/folder1/name1/
afin que toutes les réécritures soient interrompues sur les machines de développement.
Y a-t-il une chance que ce problème fonctionne? Comme le dossier development_folder
est le même sur toutes les machines de développement, serait-il aider à exclure/inclure ce dossier aux réécritures ensuite comme ceci:
RewriteRule ^((subfolder2|subfolder3)/folder2/|folder3/)?(name2|name3|name4)$ /development_folder/subfolder1/folder1/name1 [R=301,QSA,NC]
RewriteRule ^development_folder/(.*)$ $1 [QSA.NC]
RewriteRule ^subfolder1/folder1/name1$ script.php [QSA.NC]
Ou est-il une meilleure façon de le faire? Tout indice aiderait beaucoup.
OK, et si j'ai diffrent machines DEV (MAC et Windows) puis-je utiliser une instruction avant le "Include" pour gérer cela? Je ne suis pas très familier avec les fichiers Apache. – 2ndkauboy
BTW: Désolé d'être en retard avec mon upvote donc vous n'avez pas reçu la prime. J'ai donc augmenté de 10 vos réponses pour vous donner la bonne récompense :) – 2ndkauboy
Vous pouvez avoir mac_dev.rewrites et windows_dev.rewrites sur la même machine ou sur des machines différentes. Ils vont tous les deux être attirés. – dietbuddha