我在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重定向可以重定向访问文件夹吗?
答案 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]