2017-10-18 5 views
0

Je sers contenu d'un dir comme si elle était autre dir, comme ceci:htaccess pour servir de sous-dossier, mais pas obtenir directement à lui

mysite.com/dir/etc ==> mysite.com/realdir/dir/etc 

Pour ce faire mes règles dans mon fichier htaccess sont:

RewriteCond %{REQUEST_URI} ^\/([^\/]+)[\/]?(.*)$ 
RewriteCond realdir\/%1 -d 
RewriteRule^realdir/%1/%2 [L] 

Mais cela permet également de visiter directement le chemin réel. Je ne veux pas que mes utilisateurs puissent visiter le vrai chemin, je veux juste un chemin pour accéder au contenu. J'ai essayé avec des redirections mais je cause des boucles infinies.

Aidez-nous s'il vous plaît. Merci pour vos conseils.

Répondre

1

Vous pouvez utiliser:

# No acces to realdir, redirect to root with same path 
RewriteCond %{THE_REQUEST} \s/+realdir/(.*)\s [NC] 
RewriteRule^/%1 [R=301,L] 

# rewrite mysite.com/dir/etc ==> mysite.com/realdir/dir/etc 
RewriteCond realdir/$1 -d 
RewriteRule ^([^/]+)[/]?(.*)$ realdir/$1/$2 [L] 
+0

Merci @Croises pour votre aide, mais il ne fonctionne pas dans mon cas. Ça m'aide quand même. Peut-être ma question n'était pas bien écrite. –

+0

C'était une faute de frappe ... – Croises

0

Cela a fonctionné pour moi ...

# redirecting when trying to access real location 
# and avoiding loops checking the redirect status 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{REQUEST_URI} ^\/realdir(.*)$ [NC] 
RewriteRule^%1 [L,R=301] 

# serve realdir if realdir/subdir exists 
RewriteCond %{REQUEST_URI} ^\/([^\/]+)(.*)$ 
RewriteCond realdir/%1 -d 
RewriteRule^realdir\/%1%2 [L]