.htaccess - RewriteCond / RewriteRule重定向除特定文件以外的所有文件

时间:2013-10-23 19:12:39

标签: apache .htaccess server-side

我的.htaccess文件中有以下内容:

RewriteCond         %{REQUEST_URI}  ^/folder1(/.*|)$
RewriteRule         ^(.*)$  http://folder1.domain.com/  [R=301,L]

这导致我

http://folder1.domain.com

如果有人访问

http://www.domain.com/ANYTHINGHERE

我想保留此功能。 但我希望用户能够查看位于以下位置的文件:

http://www.domain.com/folder1/interestingfile.txt

当他们访问时

http://www.domain.com/folder1/interestingfile.txt

http://folder1.domain.com/interestingfile.txt

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您需要添加反向引用:

RewriteCond         %{REQUEST_URI}  ^/folder1/(.*|)$
RewriteRule         ^(.*)$  http://folder1.domain.com/%1  [R=301,L]

要在/folder1/之后反馈URI的一部分,假设您已将folder1.domain.com文档根指向/folder1/文件夹。

答案 1 :(得分:0)

你的规则如下:

 RewriteEngine On

 RewriteCond %{HTTP_HOST} ^(www\.)domain\.com$ [NC]
 RewriteRule ^(folder1)/(interestingfile\.txt)$ http://$1.domain.com/$2 [R=301,L,NC]

 RewriteCond %{HTTP_HOST} ^(www\.)domain\.com$ [NC]
 RewriteRule ^folder1/ http://folder1.domain.com/ [R=301,L,NC]

请务必:

  1. 在任何其他现有规则之前保留这些规则
  2. 在新浏览器中测试以避免301缓存