301重定向文件夹不起作用

时间:2013-08-01 01:22:46

标签: apache .htaccess redirect mod-rewrite

我在301重定向方面遇到了一些问题。并非所有规则都有效。我特别注意到,重定向文件夹的规则是不起作用的。

这些是cPanel生成的规则之一:

RewriteCond %{HTTP_HOST} ^domain\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.org$
RewriteRule ^index\.html$ "http\:\/\/www\.domain\.org\/" [R=301,L]

RewriteCond %{HTTP_HOST} ^domain\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.org$
RewriteRule ^subfolder\/$ "http\:\/\/www\.domain\.org\/" [R=301,L]

第一个基本上是要将domain.org/index.html重定向到domain.org/,它运行正常。但第二个旨在将domain.org/subfolder/重定向到domain.org的却没有。

301重定向可以重定向访问文件夹吗?

1 个答案:

答案 0 :(得分:1)

一旦你从RewriteRule中的目标中删除引号和转义字符,它应该可以正常工作。

RewriteCond %{HTTP_HOST} ^domain\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.org$
RewriteRule ^index\.html$ http://www.domain.org/ [R=301,L]

RewriteCond %{HTTP_HOST} ^domain\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.org$
RewriteRule ^subfolder/$ http://www.domain.org/ [R=301,L]

如果您尝试重定向所有不存在的子文件夹,则子文件夹是单词“子文件夹”的字面值,您可以尝试下面这样的内容。 \w通常与[A-Za-z0-9_]相同,我们也允许使用连字符。

RewriteCond %{HTTP_HOST} ^domain\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.org$
RewriteRule ^([\w-]+)/?$ http://www.domain.org/ [R=301,L]