2013-04-08 78 views
1

我正面临着一个(可能)与我的普通旧式php应用程序相当简单的问题。我有一个简单的目录结构的网站:只有当该子目录不仅在子目录中时才重定向到子目录

www.domain.com 
    /blog 
    /some_subdirectory 
    /some_other_subdirectory 

我想将用户重定向到/博客目录每次他访问任何文件夹/任何文件,在我的应用除了除非他已经是在/博客目录。

我想出了下面的代码段我的.htaccess文件里面:

Redirect 302/http://www.domain.com/blog 

当然,但是这也将重定向如果/博客目录内,引起重定向的无限循环更深/博客目录那不存在。

如何从该重定向语句中排除/ blog目录?

+0

@faa你在那里有一个很棒的答案 - 你为什么删除它? :) – weltschmerz 2013-04-08 23:40:22

+0

因为Jon的几乎是相同的,并且在5秒前发布。 – 2013-04-08 23:43:17

+0

确实,对不起 - 删除',R'就行。 – weltschmerz 2013-04-08 23:47:48

回答

1

使用mod_rewrite,而不是因为你可以创建一个负面状态:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/blog 
RewriteRule ^(.*)$ /blog/$1 [L,R] 

这当然,改变了什么是在浏览器的地址栏中的URL。如果您不想更改栏,则只需从方括号中删除,R标志即可。

+0

这很巧妙 - 非常感谢! – weltschmerz 2013-04-08 23:48:15

2

要排除文件夹,应该使用mod_rewrite。你可以试试这个:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !/blog  [NC] 
RewriteRule ^(.*) /blog/$ [L,NC]