.htaccess重定向某些虚拟目录

时间:2013-01-12 18:48:08

标签: .htaccess redirect conditional-statements

/ podcast / wp / 是一个文件夹,其他所有内容都是由RewriteEngine生成的虚拟目录。这是WordPress提供的代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /podcast/wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /podcast/wp/index.php [L]
</IfModule>

我想重定向 wp / 目录中的所有请求(现有文件夹除外)

排除以下可能的路径(也是虚拟目录):

/podcast/wp/ANYSTRING1/ANYSTRING2/feed

到另一个域:

example.com

使用.htaccess,而排除的路径仍然按原样运行。 目标是“隐藏”(重定向)除Feed之外的整个WordPress博客。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

将wordpress生成的规则更改为:

RewriteEngine On
RewriteBase /podcast/wp/

# new stuff
RewriteCond %{REQUEST_URI} ![^/]+/[^/]+/feed$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://example.com/ [L,R]

# original wordpress stuff
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /podcast/wp/index.php [L]

根据您希望如何处理重定向,您可以调整重定向到http://example.com/的规则。如果您想要301永久重定向,请添加301

RewriteRule ^(.*)$ http://example.com/ [L,R=301]

如果要在重定向中保留相对URI,请使用反向引用:

RewriteRule ^(.*)$ http://example.com/$1 [L,R]

如果要保留整个URI(包括/podcast/wp/部分,请使用URI:

RewriteRule ^(.*)$ http://example.com%{REQUEST_URI} [L,R]