2012-09-03 55 views
1

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

以下是我的htaccess文件。

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

实施例:

  • 原件: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] 

回答

0

您需要更改2件事。

  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]