使用重定向从URL中删除.html

时间:2012-04-20 11:06:23

标签: apache .htaccess magento url-rewriting

我们有一个网站,遗憾的是所有网址都有.html后缀,Magento安装,Magento允许您在CMS上进行更改,但遗憾的是,所有这些网址都带有.html后缀在Google中排名很高。我们需要重定向到非.html

因此,请考虑以下情况,我们正在从头开始重建此站点,因此我们在新站点上具有相同的URL但没有.html后缀。

  • 现在是:www.example.de/cool-shoes.html
  • 将是:www.example.de/cool-shoes

所以www.example.de/cool-shoes.html将不再存在,而且我一直在尝试使用 .htaccess 进行重定向而没有运气。

到目前为止我已经尝试过了:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule (.*)index\.html$ /$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

但它似乎不起作用......任何想法?

8 个答案:

答案 0 :(得分:10)

好的,经过一些研究,并且未能通过重写规则实现这一点,以下代码行有效:

redirectMatch 301 ^(.*)\.html $1

这对于删除任何网址扩展并避免断开链接非常有用,希望将来可以帮助某人......

喝彩!

答案 1 :(得分:8)

这将重写网址,如http://example.com/page.html - > http://example.com/page

# Remove .html from url
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

答案 2 :(得分:3)

尝试将以下内容添加到网站根目录中的.htaccess文件中,并重定向.html扩展名并将其删除。

Options +FollowSymLinks -MultiViews
DirectorySlash Off

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME}/ -d
RewriteCond %{SCRIPT_FILENAME}.html !-f
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+)\.html$ /$1 [R=301,L]

RewriteCond %{SCRIPT_FILENAME}.html -f
RewriteRule [^/]$ %{REQUEST_URI}.html [QSA,L]

答案 3 :(得分:2)

这是解决方案对我有用。

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

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}\.html -f
    RewriteRule ^(.*)$ $1.html [L]

答案 4 :(得分:1)

这应该可以解决问题:

RewriteEngine On
RewriteRule ^(\w+)\.html$ /$1 [R=301,L]

答案 5 :(得分:1)

关注steps,您可以在不修改.htaccess文件的情况下从网址中删除.html。

答案 6 :(得分:0)

尝试将此文件放入.htaccess文件中 永久重定向www.mysite.de/cool-shoes.html www.mysite.de/cool-shoes  这可能对你有所帮助

答案 7 :(得分:0)

这适用于以.html /product/raspberrypi.html --->结尾的网址/ product / raspberrypi /(/product/raspberrypi/index.php)index.php是隐藏的。我花了一些时间才弄明白这一点。大声笑......

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1 [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

你必须使用' REQUEST_URI'并在索引重定向规则之前添加它,因为它可以被应用程序覆盖。重要的是要知道它的URI不是我们试图重定向的文件名或目录,因为文件名都在根文件夹(Wordpress)中有index.php。