仅当不仅在该子目录中时,才重定向到子目录

时间:2013-04-08 23:27:19

标签: php apache .htaccess

我正面临一个(可能)非常简单的问题,我的普通旧的PHP应用程序。我的网站有一个简单的目录结构:

www.domain.com
  /blog
  /some_subdirectory
  /some_other_subdirectory

我想在每次访问我的应用程序中的任何文件夹/任何文件时将用户重定向到/ blog目录,除非他已经在该/ blog目录中。

我在.htaccess文件中提出了以下代码段:

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

但当然如果在/ blog目录中也会重定向,导致无限循环重定向到不存在的更深层/博客目录。

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

2 个答案:

答案 0 :(得分:2)

要排除文件夹,您应该使用mod_rewrite。您可以尝试这样做:

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

答案 1 :(得分:1)

请改用mod_rewrite,因为您可以创建一个否定条件:

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

这当然会改变浏览器的URL地址栏中的内容。如果您不想更改该栏,则只需从方括号中删除,R标志。