2014-12-07 74 views
0

我看到所有這些用於刪除.html擴展名的腳本似乎都無法通過SSL工作。我用新的腳本解決了這個問題,但現在我正在創建一個2步重定向鏈,我不喜歡SEO的原因 - 在你的幫助下:)我希望將它重新引導到重定向步驟/跳躍。SSL並通過HTACCESS刪除擴展名.html而無需重定向鏈

我的劇本是

RewriteBase/


RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.carpro.ro/$1 [R=301,L] 

# Force WWW prefix 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} ^([^.]+)\.([a-z]{2,4})$ [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 


# Remove .html extension 
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.html 
RewriteRule (.*)\.html$ /$1 [L,R=301] 


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

,但它似乎創建重定向的級聯。

有沒有更好的版本,這

  1. 301 HTTP到HTTPS的網站的所有網頁
  2. 重定向非WWW到WWW
  3. 刪除擴展名爲.html,不留下拖/

上述作品,但與重定向級聯的腳本,我不喜歡

http://www.domain.com/something.html 做了301重定向 https://www.domain.com/something.html 然後再301重定向 https://www.domain.com/something

而不是 http://www.domain.com/something.html 一個重定向到 https://www.domain.com/something

優化任何想法?

回答

0

可以嘗試以下重寫規則來消除HTML擴展

重寫規則^(。*)。HTML $/$ 1 [R = 301,L]

而對於後/移除

以下重寫規則(。*)

重寫規則^/$/$ 1 [R = 301,L]

希望這有助於

+0

在這種情況下,2個步驟仍然存在。非http,重定向到https,重定向到不帶html擴展名的路徑。我正在尋找的將是*** http:// www.domain.com/something.html單個重定向到*** https:/ /www.domain.com/something – 2014-12-07 14:32:33

1

嘗試此代碼:

RewriteEngine On 
RewriteBase/

RewriteCond %{SERVER_PORT} 80 
RewriteRule^https://www.carpro.ro%{REQUEST_URI} [NE,R=302,L] 

# Force WWW prefix 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=302,L] 

# Remove .html extension 
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.html 
RewriteRule (.+?)\.html$ /$1 [L,R=302,NC] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^.]+?)/?$ $1.html [NC,L] 
+1

這有助於謝謝@anubhava。您可以刪除SERVER_PORT 80部分,因爲最好在http站點中使用http重定向到https重定向 - 可以使用「重定向永久」。 – 2017-02-07 12:12:14

相關問題