在将root重写到该目录后,是否可以“隐藏”子目录?

时间:2010-11-30 12:43:53

标签: apache .htaccess mod-rewrite

我想要实现的目的基本上是隐藏页面从子目录中提供的事实。

我目前有以下.htaccess

RewriteEngine On
RewriteBase / 
RewriteCond %{REQUEST_URI} !^/blog
RewriteRule (.*) /blog/$1

这就是我想要的。它提供/blog页面,同时给用户留下根目录的印象。

但是,如果用户访问http://www.example.com/blog,则会获得相同的页面。如果可能的话,我真的希望他们得到/blog/blog

这让我担心的主要原因不是因为真实用户,而是因为机器人可能会使用错误的网址索引网页。

1 个答案:

答案 0 :(得分:2)

这是可能的,但你必须作弊。基本上THE_REQUEST在重写期间永远不会改变,所以你可以测试它。

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /blog
RewriteRule . - [F]
RewriteCond %{REQUEST_URI} !^/blog
RewriteRule (.*) /blog/$1

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond