Mon but initial était de réécrire les demandes de http://server.com/node/XXXXX
a http://server.com/node/index.cgi?XXXXX
. node
est en réalité un répertoire physique contenant index.cgi
situé directement sous la racine du document. Cette partie est assez simple :
AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI
RewriteEngine On
RewriteBase /node
RewriteCond %{REQUEST_FILENAME} !index.cgi
RewriteRule ^(.*)$ /node/index.cgi?$1 [L,QSA]
...dans le .htaccess
fichier sous /real/path/to/web/stuff/node
.
Notez que cela signifie que les demandes de la forme http://server.com/node/
fournir une chaîne de requête vide à index.cgi
et c'est ce que je veux.
Et maintenant, la partie délicate : Je veux que les requêtes http://server.com/node
pour rediriger vers http://server.com/node/
- qui, comme ci-dessus, redirige vers index.cgi
avec un QS vide. Le problème, c'est que si je n'ai pas de règles dans mon répertoire racine, une requête de http://server.com/node
semble en effet aller à http://server.com/node/
- mais je trouve que la chaîne de requête donnée à index.cgi
est le chemin physique complet correspondant à la demande ( /real/path/to/web/stuff/node
) !
J'ai essayé une règle dans mon niveau de la racine .htaccess
comme :
RewriteCond %{REQUEST_URI} =/node
RewriteRule ^(.*)$ /node/ [L] # (also tried [L,R=302])
Mais cela n'a aucun effet.
Je me rends compte qu'Apache fait un peu d'ajout de slashs de suivi sous le capot, mais je ne peux utiliser DirectorySlash Off
... et je ne voudrais pas le faire si je le pouvais, puisque j'ai une installation Drupal qui réside à la racine (il y a un certain nombre de règles de réécriture similaires, mais je ne pense pas qu'elles interfèrent).
Est-il possible de créer une règle pour le répertoire racine ? .htaccess
qui fonctionne, ou une modification de la /node/.htaccess
pour que ça n'ait pas d'importance ? Même le fait de déplacer physiquement les choses n'est pas au-delà de la raison.
Ceci se passe sur un hôte utilisant Apache 1.3.41 sur FreeBSD 7.3. Je n'ai pas la possibilité de changer quoi que ce soit dans la configuration du serveur lui-même, seulement mon .htaccess
(ce qui signifie que je ne peux même pas activer la journalisation de la réécriture !)