Redirect Issue in .htaccess
-
Hi, I'm stumped on this, so I'm hoping someone can help. I have a Wordpress site that I migrated to https about a year ago. Shortly after I added some code to my .htaccess file. My intention was to force https and www to all pages. I did see a moderate decline in rankings around the same time, so I feel the code may be wrong. Also, when I run the domain through Open Site Explorer all of the internal links are showing 301 redirects. The code I'm using is below. Thank you in advance for your help!
Redirect HTTP to HTTPS
RewriteEngine On
ensure www.
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]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
USER IP BANNING
<limit get="" post="">order allow,deny
deny from 213.238.175.29
deny from 66.249.69.54
allow from all</limit>#Enable gzip compression
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript#Setting heading expires
<ifmodule mod_expires.c="">ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType image/x-ico "access plus 1 year"
ExpiresByType image/jpg "access plus 14 days"
ExpiresByType image/jpeg "access plus 14 days"
ExpiresByType image/gif "access plus 14 days"
ExpiresByType image/png "access plus 14 days"
ExpiresByType text/css "access plus 14 days"</ifmodule> -
The issue of the internal links of your site going through 301-redirects isn't being caused by the htaccess file, John - in fact that file is partially saving you from the bigger issue.
The problem is that your WordPress migration to HTTPS was incomplete.
After the migration, you missed the step of going through the WP database and changing all the static URLs to the HTTPS versions as well. This can be done using a mySQL query through phpMyAdmin, but the easiest way is to use the Better Search Replace plugin. (You need to be sure you're correctly handling serialised data, which the plugin does automatically.)
In addition, you're going to want to insure that you've updated the WordPress Address URL and the Site URL in Settings > General to the HTTPS versions of the URLs.
The final check will then be to make certain all the static assets loaded by the site (and any referenced from 3rd parties) are also being loaded over HTTPS as well. Watch especially for 3rd party form codes like newsletter subscription forms, social media widgets, and other widgets in sidebars as these aren't caught by the rewrite plugin I mentioned earlier. This step is essential to insure you don't have "mixed content" on the pages which cause you to get a non-secure warning from the browser.
You may have used a "Switch to HTTPS" plugin for this process initially, but the majority of those don't accomplish their task in the most SEO-effective way. Using the method outlines above will both make the search engines happier,and will make for faster webpage performance as well.
Let me know if you have further questions.
Paul