htaccess从子文件夹提供但不直接到它

时间:2017-10-18 06:53:59

标签: apache .htaccess

我正在从一个目录中提供内容,就好像它是其他目录一样,如下:

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

为了达到这个目的,我的htaccess文件中的规则是:

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

但这也允许直接访问真实路径。我不希望我的用户能够访问真实路径,我只想要一条路径来访问内容。我尝试过重定向,但是我造成了无限循环。

请帮忙。谢谢你的建议。

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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]