htaccess重定向目录,但不包含目录中的文件

时间:2019-02-01 00:05:43

标签: php .htaccess redirect

我需要重定向自:

http://example.com/folder

http://example.com/

但是离开:

http://example.com/folder/file

这可能吗?

我见过this question,但它仅适用于子文件夹而不适用于文件。

2 个答案:

答案 0 :(得分:1)

根据您的问题,有两种方案,您可以根据需要选择合适的方案:

第一

RewriteEngine On 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,7}\s/folder/?\sHTTP.*$
RewriteRule ^(.*)$    / [R=302,L]
RewriteRule ^$    /folder/ [L]

您同时捕获了两个请求http://example.com/folderhttp://example.com/folder/,然后将其中的任何一个外部重定向到http://example.com/,但仍从该文件夹内部获取数据。

第二:

RewriteEngine On 
RewriteCond %{REQUEST_URI} /folder/?$
RewriteRule ^(.*)$    /  [R=302,L]

您捕获了两个请求http://example.com/folderhttp://example.com/folder/,然后将其中任何一个重定向到http://example.com/

在这两种情况下,对http://example.com/folder/file的任何请求都将保持不变。

注意:如果任何一个都可以,请将R=302更改为R=301以进行永久重定向

答案 1 :(得分:0)

尝试一下

RewriteCond %{REQUEST_URI} ^/folder/?$
RewriteCond %{REQUEST_URI} !^/folder/file$
RewriteRule (.*) / [R=301,L]