2010-04-11 9 views
8

Je pense que c'est une question assez simple.Mod Rewrite Masquer le dossier

Comment pouvez-vous réécrire apache pour cacher un dossier.

EX: www.website.com/pages/login.php à www.website.com/login.php~~V~~singular~~3rd

ou www.website.com/pages/home.php à www.website.com/~~V~~3rd home.php

Le dossier doit toujours être masqué. merci

Répondre

12

Je suppose que ce que vous voulez est que le navigateur demande /home.php mais le serveur utilise réellement le fichier situé dans /pages/home.php, non? Si oui, cela devrait fonctionner:

Assurez-vous que le module apache mod_rewrite est installé. Ensuite, utilisez quelque chose comme ça dans votre config apache, configuration d'hôte virtuel, ou (moins souhaitable) fichier .htaccess:

RewriteEngine On 
RewriteRule ^/(.*)$ /pages/$1 

Les règles utilisent des expressions régulières, de sorte que vous pouvez regarder une référence sur ce sujet si vous n'êtes pas sûr. Lisez le manual pour plus d'informations sur les autres directives (RewriteCond peut être très utile) ou les options de règles.

0

Si votre exemple reflète réellement les fichiers dont vous avez besoin, puis dans votre fichier .htaccess:

#Options +FollowSymLinks 
RewriteEngine On 

RewriteRule ^/pages/(.+)\.php $1\.php [NC, L] 

En outre, si le répertoire a lu l'autorisation, il ne peut être, en réalité « cachée ». Je suppose que vous voulez dire qu'il n'apparaît plus dans l'url.

+1

C'est aussi ce que j'avais au début. Mais cela signifie que l'utilisateur verrait /pages/home.php dans la barre d'adresse, alors que le serveur servirait /home.php. Après repenser, je pense que l'OP veut le contraire ... – grossvogel

+0

@grossvogel - vous avez raison - je relis sa question de plus près. – TMG

8

Je sais que le post original date d'il y a quelques années, mais il est apparu en premier dans le moteur de recherche, alors peut-être que cela aidera d'autres personnes à cacher un nom de dossier dans l'URL.

Pas exactement ce que voulait l'affiche originale, mais dans le même sens.

RewriteCond %{HTTP_HOST} ^mydomainname\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.mydomainname\.com$ 
RewriteCond %{REQUEST_URI} !^/subfoldername/ 
RewriteRule (.*) /subfoldername/$1 

L'exemple ci-dessus rediriger toute demande de mydomainname.com ou www.mydomainname.com au répertoire subfoldername dans le répertoire racine du domaine, et le nom du sous-dossier ne figurerait pas dans l'URL.