2015-12-21 142 views
5

我有多個wordpress安裝和.htaccess重寫規則的一些問題,主要用於強制https,但也去除www。來自任何域。強制非WWW,但強制https跨越所有wordpress和整個域名

域/子域:

  • WordPress的1:examplewebsite.com/home/hostingacc/public_html/
  • WordPress的2:test.examplewebsite.com/home/hostingacc/public_html/test/
  • WordPress的3:moretests.examplewebsite.com/home/hostingacc/public_html/moretests

htaccess的重新寫入

我試圖用我已經在互聯網上發現了幾個重寫規則,一個是不知道該怎麼用最好的之一,但下面是我用

RewriteEngine On 
RewriteCond %{HTTP_HOST}#%{HTTPS}s ^www\.([^#]+)#(?:off|on(s)) [NC] 
RewriteRule^http%2://%1%{REQUEST_URI} [R=301,L] 

,我從拿到主重寫規則https://github.com/h5bp/server-configs-apache/issues/48但如前所述,這些中的一個可能更適合爲FORCING HTTPS和強制刪除WWW

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

RewriteEngine On 
RewriteCond %{HTTPS} !=on [OR] 
RewriteCond %{HTTP_HOST} !^examplewebsite\.com$ [NC] 
RewriteRule^https://examplewebsite.com%{REQUEST_URI} [R=301,L] 

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
RewriteCond %{HTTP_HOST} ^www*\.(.*examplewebsite\.com)$ [NC] 
RewriteRule^https://%1%{REQUEST_URI} [R=301,L] 

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www*\.(.*examplewebsite\.com)$ [NC] 
RewriteRule^https://%1%{REQUEST_URI} [R=301,L] 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

所有上述規則,似乎在關於工作,迫使HTTPS和主WordPress安裝去除WWW但是規則目前不適用於子域或/wp-admin/每個wordpress安裝的子目錄,我認爲這是因爲每個目錄中都有一個.htaccess文件。

問題重溫

  • examplewebsite.com(主站)正確被迫始終使用https,也被迫刪除WWW。但是...問題位於examplewebsite.com/wp-admin/,它仍然正確強制https(通過規則或通過wp-config.php強制管理員ssl,但它並沒有強制刪除www。原因,我想這是因爲我有以下.htaccess文件位於/ wp-admin /文件夾下,所以它看起來像我需要在此文件夾中的htaccess規則來強制刪除www。並且也強制https。

  • test.examplewebsite.com和moretests.examplewebsite.com(子域)都有它不是強制使用HTTPS的一個問題,這也不是強制刪除WWW。

  • test.examplewebsite.com和moretests.examplewebsite。 com(子域名)都與第一個/ wp-admin /具有相同的問題不要強行刪除www。

  • 如果我進入我的子域的設置或SQL,甚至編輯wp-config.php以覆蓋SQL並將網站url和home url更改爲使用https並且不使用www。(https的會導致此問題),那麼WordPress的安裝變得inacessable,他們消失和來訪的鏈接子域重定向的主要網站,而不是

配置

  • examplewebsite.com /負載 - 電流。 htaccess的文件

主頁:http://pastebin.com/raw/9RNuQZS5
WP管理:http://pastebin.com/raw/8vVnDTRx

  • examplewebsite.com - SQL變量

站點URL(主頁):https://www.examplewebsite.com
WordPress的網址:https://www.examplewebsite.com

  • examplewebsite.com - WP配置(覆蓋SQL)

配置:

define('FORCE_SSL_ADMIN', true); 
define('FORCE_SSL_LOGIN', true); 

define('WP_HOME','https://examplewebsite.com'); 
define('WP_SITEURL','https://examplewebsite.com'); 
define('DOMAIN_CURRENT_SITE', 'examplewebsite.com'); 
define('COOKIE_DOMAIN', 'examplewebsite.com'); 
define('ADMIN_COOKIE_PATH', '/wp-admin/'); 
  • test.examplewebsite.com和moretests.examplewebsite.com

的子域都設置如下,但是不施加WP-配置目前因爲強制https導致問題4.

.htaccess文件與99%相同到主域/網站與那個唯一的例外在那些沒有自定義代碼重寫WP循環規則(從WWW重定向到非www和HTTP重定向到https)

  • test.examplewebsite。 COM和moretests.examplewebsite.com - SQL變量

站點URL(主頁):http://test.examplewebsite.com
WordPress的網址:http://test.examplewebsite.com

  • test.examplewebsite.com和moretests.examplewebsite。COM - WP配置(重寫SQL)

配置:

define('FORCE_SSL_ADMIN', true); 
define('FORCE_SSL_LOGIN', true); 

define('WP_HOME','https://test.examplewebsite.com'); 
define('WP_SITEURL','https://test.examplewebsite.com'); 
define('DOMAIN_CURRENT_SITE', 'test.examplewebsite.com'); 
define('COOKIE_DOMAIN', 'test.examplewebsite.com'); 
define('ADMIN_COOKIE_PATH', '/wp-admin/'); 

設置上面,導致同樣的問題,因爲SQL變化(第4期)

+0

應該在哪裏子域名重定向到如果沒有HTTPS?主要域名或與https的子域名? –

+0

子域名應​​該是https而不是http。 – Ryflex

+0

你說wp-admin沒有做https?你的.htaccess中會有其他規則可以做到這一點嗎? –

回答

0

步驟進行檢查(我只是說明一個網站):

  1. ping www.examplewebsite.com預期結果:您應該看到ip您的網站的地址
  2. 平examplewebsite.com預期的結果:你應該看到你的網站的IP地址
  3. 瀏覽https://examplewebsite.com,以確保您可以broswe的 網站
  4. 添加遵循開始您的自定義代碼WP REWRITE LOOP 開始在根目錄的.htaccess:

    # CUSTOM CODE WP REWRITE LOOP START 
    # WP REWRITE LOOP START 
    RewriteEngine On 
    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^(.*)$ https://examplewebsite.com/$1 [R,L] 
    RewriteBase/
    RewriteRule ^index\.php$ - [L] 
    

    上面是確保重定向到SSL訪問 所有非SSL訪問,同時改名爲所有非SSL訪問現場examplewebsite.com,現在 你應該被重定向到https://examplewebsite.com,如果你在瀏覽器

  5. 最後一部分是有你的wp-config.php文件以包括 鍵入 http://www.examplewebsite.comhttp://examplewebsite.com如下:

    define('WP_HOME','https://examplewebsite.com'); 
    define('WP_SITEURL','https://examplewebsite.com'); 
    define('DOMAIN_CURRENT_SITE', 'examplewebsite.com'); 
    define('COOKIE_DOMAIN', 'examplewebsite.com'); 
    define('ADMIN_COOKIE_PATH', '/wp-admin/'); 
    

    這部分是爲了確保即使在SSL訪問 www.examplewebsite.com得到由 WordPress的

  6. rewrited到examplewebsite.com

因爲你,因爲只有SSL訪問啓用完整的網站,所以下面是沒有必要在你的wp-config.php文件:

define('FORCE_SSL_ADMIN', true); 
define('FORCE_SSL_LOGIN', true); 
+0

關於1&2,他們顯示我的服務器IP。關於3,是我的正常網站加載...關於4,我已經給出了幾個工作的例子,強制ssl和刪除www,他們都工作,但它不能解決問題。重新5,我已經包括在我原來的帖子中提到的。至於你最後的小點,無論有沒有它都沒有區別。 – Ryflex

+0

@Ryflex號碼3是最重要的問題,您需要通過https訪問該站點,否則它意味着它沒有ssl訪問權限! – Allen

+0

是的,我說這個網站正常加載。我的SSL證書是好的,他們工作。 – Ryflex