2016-07-07 1 views
1

Dans le httpd.conf, je souhaite autoriser un chemin principal mais interdire un sous-dossier particulier.LocationMatch pour autoriser une URL principale à exclure un sous-dossier spécifique

Toute URL avec ce modèle doit être accepté:

/app-1.0/public

/app-1.0/images

/app-1.0/

mais celui-ci doit être ignoré/pas autorisé.

/app-1.0/private

Je veux utiliser cette configuration sur une version apache 2.2.3. J'ai lu que cette version ne supporte pas les négatifs regex, mais je ne suis pas sûr.

Merci beaucoup à l'avance.

+0

Essayez '/app-1\.0/(?! private $). *' –

+0

Merci beaucoup Wiktor. Je l'ai essayé mais j'avais besoin de le modifier un peu: /app-1\.0/(?!private).* – Alejandro

+0

Content de pouvoir aider. S'il vous plaît vérifier ma réponse ci-dessous. –

Répondre

0

Si vous voulez interdire tous les chemins qui commencent par /app-1.0/ et alors private, vous pouvez utiliser

^/app-1\.0/(?!private).* 

Voir la regex demo

explication des motifs:

  • ^ - début de la chaîne (enlever si le texte n'est pas au début)
  • /app-1\.0/ - un texte /app-1.0/ littéral (le point doit être échappèrent à traiter comme un point littéral)
  • - une préanalyse négative qui échoue le match (= ne permettant pas) s'il y a un texte private juste après la position actuelle
  • .* - tout 0+ caractères autres qu'un saut de ligne

NOTE: Dans mon commentaire original, je suggère /app-1\.0/(?!private$).* motif avec un $ après private. Ce modèle n'autorise pas (= ne correspond pas) à une chaîne contenant /app-1.0/private à la fin ($ est l'ancre de fin de chaîne).

+0

Content de pouvoir aider. Veuillez considérer accepter la réponse (voir [Comment accepter les réponses SO] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)) et upvoting si ma réponse s'est révélée utile vous (voir [Comment augmenter le dépassement de pile?] (http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow)). –