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

Php 仅当不在该子目录中时重定向到该子目录,php,apache,.htaccess,Php,Apache,.htaccess,我面临一个(可能)非常简单的问题,我的普通老php应用程序。我有一个简单目录结构的网站: www.domain.com /blog /some_subdirectory /some_other_subdirectory 我想在用户每次访问我的应用程序中的任何文件夹/文件时将其重定向到/blog目录,除非他已经在该/blog目录中 我在.htaccess文件中找到了以下代码片段: Redirect 302 / http://www.domain.com/blog 当然,如果在/bl

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

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

我在.htaccess文件中找到了以下代码片段:

Redirect 302 / http://www.domain.com/blog
当然,如果在/blog目录中,这也会重定向,从而导致无限循环重定向到不存在的更深层次的/blog目录


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

使用mod_rewrite,因为您可以创建一个负面条件:

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

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

要排除文件夹,应使用mod_rewrite。您可以尝试以下方法:

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

@faa你有一个很棒的答案——你为什么要把它去掉?:)因为Jon的几乎是一样的,并且是在5秒钟前发布的。真的,对不起-删除
,R
就可以了。