8

我们有一个网站,不幸的是所有的 URL 都有.html后缀,它是一个 Magento 安装,Magento 允许您在 CMS 上更改它,但不幸的是,所有这些带.html后缀的 URL 在 Google 中的排名都很好。我们需要重定向到 non .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

但它似乎不起作用......有什么想法吗?

4

8 回答 8

12

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

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

这对于删除任何 url 扩展名并避免损坏的链接非常有用,希望将来对某人有所帮助...

干杯!

于 2012-04-23T11:35:54.813 回答
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
于 2012-07-15T23:45:36.983 回答
4

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

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]
于 2012-09-21T16:21:31.367 回答
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]
于 2014-04-10T22:20:24.580 回答
1

按照步骤,您将能够从 url 中删除 .html 而无需修改 .htaccess 文件。

于 2012-04-20T11:35:17.223 回答
1

这应该可以解决问题:

RewriteEngine On
RewriteRule ^(\w+)\.html$ /$1 [R=301,L]
于 2012-04-20T11:21:34.073 回答
0

试试这个把你的 .htaccess 文件重定向永久 www.mysite.de/cool-shoes.html www.mysite.de/cool-shoes 这可能对你有帮助

于 2012-04-24T12:35:13.980 回答
0

这适用于以 .html /product/raspberrypi.html ---> /product/raspberrypi/ (/product/raspberrypi/index.php) 结尾的 URL,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。

于 2017-01-21T06:18:42.487 回答