2017-10-18 20 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]