.htaccess 301重定向非斜杠域并将域缩减为.html

时间:2013-05-03 09:33:17

标签: .htaccess redirect seo slash

我正在尝试向我的.htaccess添加一些代码,以将斜杠和非斜杠网址重定向到.html所有网址,而不是我的主页。

例如 www.mydomain.com/cat/和www.mydomain.com/cat 应该重定向到www.mydomain.com/cat.html

我已设法将以下内容添加到我的.htaccess中,它将www.mydomain.com/cat重定向到正确的位置www.mydomain.com/cat.html但需要一些帮助才能将斜杠版本重定向到。 HTML页面

RewriteCond %{REQUEST_URI} !\.[^./]+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://mydomain.com/$1.html [R=301,L]

我的整个.htaccess看起来像这样,如果有人就如何根据上述内容提出任何建议,我们将不胜感激。

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^xxx.xxx.xxx.xx [nc,or]
RewriteCond %{HTTP_HOST} ^mydomain.com [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]

RewriteCond %{THE_REQUEST} ^.*/index.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L] 


RewriteCond %{REQUEST_URI} !\.[^./]+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://mydomain.com/$1.html [R=301,L]


DirectoryIndex index.html index.php

<IfModule mod_rewrite.c>
RewriteEngine on
# Pleas note that RewriteBase setting is obsolete use it only in case you experience  some problems with SEO addon.
# Some hostings require RewriteBase to be uncommented
# Example:
# Your store url is http://www.yourcompany.com/store/cart
# So "RewriteBase" should be:
# RewriteBase /store/cart
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !\.(png|gif|ico|swf|jpe?g|js|css)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php?sef_rewrite=1 [L,QSA]

</IfModule>

解决: 我刚补充说:

RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$  /$1 [R=301,L]

1 个答案:

答案 0 :(得分:0)

单独的规则似乎对您有用,但我认为您可以将其简化为一个规则,并带有可选的斜杠。您的规则将斜杠重定向到no-slash,然后再重定向到.html。使用一条规则,您只需要一次重定向。

这有标准的RewriteCond,用于检查它是不是文件还是文件夹,因此如果它已经是一个,它就不会重定向.html。然后,ReweriteRule中的\?是可选的斜杠。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ http://mydomain.com/$1.html [R=301,L]

如果您的域名全部存在,则可以从结果中省略它:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ /$1.html [R=301,L]

此外,请注意,这将捕获并使用子文件夹,无论您是否意味着它。例如。, www.mydomain.com/animals/cat/将重定向到www.mydomain.com/animals/cat.html