1 votes

La requête Apache contient le chemin physique complet lorsque la barre oblique de fin est omise.

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 !)

1voto

WormSlayer Points 31

La documentation d'Apache 1.3 contient un entrée faisant référence au "problème de la barre oblique de fin". peut-être que cela peut vous aider pour ce scénario.

En ce qui concerne vos règles avec les ID de nœuds, la RewriteBase peut être votre problème puisque "le préfixe du répertoire local est supprimé et vos règles de réécriture n'agissent que sur le reste", comme indiqué dans le document suivant la documentation de RewriteBase .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X