2010-08-10 5 views
15

Je veux avoir cas URL insensibles en utilisant le module mod_speling d'Apache, mais il produit des listes non désirées de « plusieurs options », tandis que le documention Apache ditcas Apache mod_speling URL insensibles d'émission

Lorsqu'il est défini, cette directive limite la action de la correction orthographique sur les changements majuscules/minuscules. D'autres corrections potentielles ne sont pas effectuées.

Je teste ce sur une nouvelle Unix Apache 2.2.16 installer mais je suis toujours en cours d'exécution dans exactement les mêmes problèmes présentés en 2008.

Il est inattendu comportement (et non voulu) quand Apache liste quelques "choix multiples" (code d'état 300) lorsque la directive checkCaseOnly est activée!

J'ai dans mon httpd.conf:

CheckSpelling on 
CheckCaseOnly on 

directive d'abord utiliser la mod_speling, la deuxième directive pour limiter uniquement aux corrections de cas

Qu'est-ce que je fais mal?

+1

Avez-vous déjà résolu ce problème? Je cours dans le même problème. –

Répondre

2

Voulez-vous vraiment une URL insensible à la casse?
Pourquoi ne pas forcer les URLs en minuscules, comme ça?

RewriteEngine On 
RewriteMap lc int:tolower 
RewriteRule (.*) ${lc:$1} [R] 

Jetez un oeil à http://www.issociate.de/board/post/265865/make_URL

+1

Lorsque je fais cela, je reçois une erreur de serveur interne 500 .... – Shackrock

+1

En fait, c'est toutes sortes de mal maintenant que je l'ai essayé. Même le rewriteRule est réellement incorrect ici ... – Shackrock

+0

Que faire si vous avez un cas de chameau? Ne fonctionnera pas. –

10

Pour activer mod_speling (soit par emplacement ou VirtualHost), utilisez la directive:

CheckSpelling Sur

Si tout ce que vous voulez est cas, utilisez Insensibilité:

CheckCaseOnly le

8

sur Ubuntu 12.04 LTS en utilisant Apache 2.2, je l'ai fait ce qui suit:

  1. Créer speling.conf en ${APACHE}/mods-available pour fournir les options de configuration.

    <IfModule mod_speling.c> 
        CheckSpelling On 
        CheckCaseOnly On 
    </IfModule> 
    
  2. Lien speling.conf et speling.load dans les modules permis répertoire ${APACHE}/mods-enabled:

    # cd ../mods-enabled 
    # ln -s ../mods-available/speling.conf speling.conf 
    # ln -s ../mods-available/speling.load speling.load 
    
  3. Redémarrez le serveur.

    # service restart apache2 
    
8

TLDR: CheckCaseOnly est cassé à cause d'un bug qui est resté non fixée pendant plus de six ans à compter de 10/2014. Je sais que c'est une vieille question, mais je viens de rencontrer le même problème. Cette mise à jour a pour but d'aider les autres avec le même problème.

Les réponses actuelles à cette question sont incorrectes, car l'OP utilise mod_speling correctement, mais il y a un bug.

https://issues.apache.org/bugzilla/show_bug.cgi?id=44221

La question sous-jacente est que le peuple apache sont en désaccord sur la fixation de ce comportement, car il change le reste du module. Ceci est resté non fixé pour quelque chose comme 6 ans.