3

E コマース Web サイトを検索エンジン最適化しようとしています。このウェブサイトは、Wordpress プラットフォームで WooCommerce プラグインを使用しています。さらに、ユーザーがサイトで直接支払うことができるようにする authorize.net ゲートウェイがあります。これは、サイトに SSL 証明書が必要であることを意味します。

SEO の理由から、サイトを HTTP プロトコルで動作させたい/必要としていますが、支払いゲートウェイ ページ (/cart、/my-account、/checkout など) は例外で、HTTPS プロトコルを使用する必要があります。

現在、次のコードがあります。

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/cart/
RewriteCond %{REQUEST_URI} !^/checkout/

RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

このコードでは、いくつかの問題が発生しています。まず、「カート」ページにアクセスすると、https にリダイレクトされませんが、チェックアウト ページはリダイレクトされます。

次に、チェックアウト ページが読み込まれるときに、ホストされているコンテンツ (Css、JS、img など) の一部が読み込まれません。これは、同じ https プロトコルで動作していないためだと思います。これを修正するにはどうすればよいですか?

第三に、 https://mydomain.com/somepageを使用してサイトに手動でアクセスすると、 http://mydomain.com/somepageバージョンに 301 リダイレクトされません。

これらすべてにより、上記のコードが正しく記述されていないと信じるようになります。誰にもアイデアはありますか?SEO は重要であるため、表示する必要がある唯一のページは http:// ページです (私が指定したものを除く)。https バージョンが 301 リダイレクトされて http://

これが私のhtaccessファイルが今どのように見えるかです-

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/cart/
RewriteCond %{REQUEST_URI} !^/checkout/

RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

<FilesMatch "^(wp-comments-post\.php)">
Order Allow,Deny
Deny from xx.xxx.xx.
Deny from xx.xxx.xx.
Deny from xx.xxx.xx.
Allow from all
</FilesMatch>
4

1 に答える 1

1

WordPress ルールの前にSSL/非 SSL リダイレクトを配置します。HTTPS にリダイレクトするだけでなく、HTTPSからHTTP にリダイレクトするルールも必要です。

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/cart/
RewriteCond %{REQUEST_URI} !^/checkout/
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} off
RewriteRule ^(cart|checkout)/ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
于 2013-10-09T03:26:13.293 に答える