2017-10-18 23 views
0

我服務從一個內容,就好像它是其他dir指明,像這樣:htaccess的從子文件夾服務,但不能直接得到它

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

要在我的htaccess文件實現這一點我的規則是:

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

但是,這也允許直接訪問真正的路徑。我不希望我的用戶能夠訪問真實路徑,我只需要一條路徑即可訪問內容。我試過重定向,但我造成了無限循環。

請幫忙。謝謝你的建議。

回答

1

您可以使用:

# 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

感謝@Croises您的幫助,但它並沒有我的情況下工作。無論如何它幫助我。可能我的問題寫得不好。 –

+0

這是一個錯字... – Croises

0

這個工作對我來說...

# 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]