2012-09-03 73 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]