1

我遇到了 .htaccess 问题,我成功地重写了 URL,但内容不再加载。

以下是我的 htaccess 文件。

我的目标是我的所有 .html 页面(该网站由 .html 静态页面组成)删除它们的扩展名。但是,我要求将 .html URL 301 重定向到新 URL,这样我的 SEO 就不会受到这些更改的影响。

例子:

  • 原文:www.example.co.uk/page.html
  • 所需:www.example.co.uk/page/

重要的是原始 URL 会重定向新 URL。

Options +FollowSymLinks
RewriteEngine on

# REDIRECT yourdomain.com TO www.yourdomain.com
RewriteCond %{HTTP_HOST} !^www.example.co.uk$ [NC]
RewriteRule ^(.*)$ http://www.example.co.uk/$1 [L,R=301]

RewriteRule (.+)\.html?$ http://www.example.co.uk/$1/ [R=301,L]

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

我已经尝试了上面的 htaccess,也尝试了下面的变体,但都没有按预期工作。任何帮助将非常感激。

Options +FollowSymLinks
RewriteEngine on

# REDIRECT yourdomain.com TO www.yourdomain.com
RewriteCond %{HTTP_HOST} !^www.example.co.uk$ [NC]
RewriteRule ^(.*)$ http://www.example.co.uk/$1 [L,R=301]

RewriteRule (.+)\.html?$ http://www.example.co.uk/$1/ [R=301,L]
4

1 回答 1

0

你需要改变两件事。

  1. 在重定向后添加此内容以防止重定向循环:

    RewriteCond %{ENV:REDIRECT_STATUS} 200
    RewriteRule ^ - [L]
    
  2. 将最后一条规则更改为:

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} ^/(.*?)/?$
    RewriteCond %{DOCUMENT_ROOT}/%1\.html -f
    RewriteRule ^ /%1.html [L]
    
于 2012-09-04T05:11:18.320 回答