.htaccess重定向,如果url中的文件夹名称

时间:2013-03-10 22:29:46

标签: .htaccess url rewrite

使用.htaccess,我正在寻找将URL从一个文件夹重定向到另一个文件夹。

例如,如果用户请求'forbiddenFolder'http://www.mysite.com/forbiddenFolder/subfolder

http://www.mysite.com/forbiddenFolder/somefile.php

http://www.mysite.com/forbiddenFolder/somefile.swf

http://www.mysite.com/forbiddenFolder/somefile.f4v

应将其重定向到http://www.mysite.com/forbidden.php

我不想锁定目录本身,因为那里有资源是必需的。重定向应仅基于URL字符串工作,或者如果用户从www.anothersite.com创建脚本并从http://www.mysite.com/forbiddenFolder中提取文件

我认为应该实施重写条件......?

1 个答案:

答案 0 :(得分:5)

你可以试试这个:

Options +FollowSymLinks -MultiViews                                        
RewriteEngine On                                                           
RewriteBase /                                                              
RewriteCond %{REQUEST_URI}  ^/forbiddenFolder     [NC]                     
RewriteCond %{REQUEST_URI}  /[\w]+\.(php|swf|f4v) [NC,OR]                  
RewriteCond %{REQUEST_URI}  /[^.]+/?$             [NC]                     
RewriteCond %{REQUEST_URI}  !forbidden\.php       [NC]                     
RewriteRule .*              /forbidden.php        [L,NC]  

内部地图

http://www.mysite.com/forbiddenFolder/subfolder

http://www.mysite.com/forbiddenFolder/somefile.php

http://www.mysite.com/forbiddenFolder/somefile.swf

http://www.mysite.com/forbiddenFolder/somefile.f4v

致:

http://www.mysite.com/forbidden.php

对于永久性和可见的重定向,请将[L,NC]替换为[R=301,L,NC]


OPTION

使用修改后的传入网址结构。

例如:

http://localhost/trafficticket.tv/Sites/public_html/forbiddenFolder/somefile.swf

将以前的规则块替换为:

Options +FollowSymLinks -MultiViews                                        
RewriteEngine On                                                           
RewriteBase /                                                              
RewriteCond %{REQUEST_URI}  /forbiddenFolder      [NC]                     
RewriteCond %{REQUEST_URI}  /[\w]+\.(php|swf|f4v) [NC,OR]                  
RewriteCond %{REQUEST_URI}  /[^.]+/?$             [NC]                     
RewriteCond %{REQUEST_URI}  !forbidden\.php       [NC]                     
RewriteRule .* /trafficticket.tv/Sites/public_html/forbidden.php [L,NC]

要使用任何其他URL,唯一的要求是在重写规则中将正确的段路径添加到/forbidden.php。在这种情况下,该段是

/trafficticket.tv/Sites/public_html

但它可能是任何事情或者什么都不是,就像在最初的问题中一样。