.htaccess,URL更改但加载内容

时间:2012-09-03 11:50:25

标签: .htaccess mod-rewrite redirect

我遇到.htaccess问题,我已成功重写网址,但内容已不再加载。

以下是我的htaccess文件。

我的目标是我所有的.html页面(该网站由.html静态页面构成)以删除其扩展名。但是,我要求将.html网址301重定向到新网址,以便我的搜索引擎优化不会受到这些更改的影响。

示例:

  • 原文:www.example.co.uk/page.html
  • 期望:www.example.co.uk/page /

原始网址重定向新网址非常重要。

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]

1 个答案:

答案 0 :(得分: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]