.htaccess重定向,如果文件或二级目录不存在

时间:2011-12-09 16:43:38

标签: .htaccess mod-rewrite redirect

我有一种情况,我在/ products目录中有一堆旧内容。继续前进,新内容将进入/ product文件夹。如果文件或目录不存在,我想做的是重定向到/产品。

我在/ products文件夹中的.htaccess文件中有以下内容:

RewriteEngine On
RewriteCond   %{REQUEST_FILENAME} !-f
RewriteCond   %{REQUEST_FILENAME} !-d
RewriteRule   ^(.*)$ /product/$1 [R=301,L]

这适用于/ products目录中的文件以及包含index.htm文件或其他文件名的子目录,但是我想将非现有目录上的重定向限制为2级:

/ products / someproduct - 请勿重定向

/产品/ someproduct / anotherproduct 如果它不存在,请重定向到/ product / someproduct / anotherproduct

如何强制规则仅应用于2级或更深级别的子目录?

1 个答案:

答案 0 :(得分:0)

尝试以下

RewriteEngine On
RewriteBase /

#for all /products/somefolder/any_folder_level_deeep content
RewriteCond %{REQUEST_URI} ^/products/([^/]+/.+)$ [NC]
#if file does not exist
RewriteCond   %{REQUEST_FILENAME} !-f
#and directory does not exist
RewriteCond   %{REQUEST_FILENAME} !-d
#redirect to product folder
RewriteRule   . /product/%1 [R=301,L]