I inherited a live Wordpress website where 30+ pages were 301 redirected to the home page. Which is... obviously not ideal.
This is an example of what is happening:
https://www.example.com/shop -- 301 --> https://example.com
In that scenario, this is what I want to be happening:
https://www.example.com/shop --> https://www.example.com/shop
I'd consider myself a beginner at Apache. I don't typically use htaccess except for basic SSL redirects. I've been banging my head against the wall all night so any advice is welcome.
EDIT:
Caching doesn't seem to be the issue as the redirect persists in Chrome incognito. Here's my current .htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
UPDATE:
This code in the wp-config file appears to be causing issues. When I comment it out, some of the URLs are no longer 301 but the page content that is loading is still the home page on every page.
define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/');
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/');
Your file looks very similar to the WordPress default, except for a couple items. First, you have multiple RewriteBase
directives. The last one wins and controls the entire .htaccess
file. This should be corrected. Second, you have a redirect from http
protocol to https
, which is probably fine and intentional.
According to the WordPress documentation , the default WordPress .htaccess
file contains:
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Working from the WordPress default file above, your file has some added lines that I'll explain.
Ths is a conditional test if the mod_rewrite module is enabled. It's fine, but may be optional in your case.
<IfModule mod_rewrite.c>
The first two lines below are fine. The second instance of RewriteEngine On
should be removed, and may be the source of your issue.
RewriteEngine On RewriteRule.* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteEngine On
These lines check for http
protocol and redirect to https
.
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
This is the end of the conditional block. It's fine, and required because you have the line in number 1 above.
</IfModule>
Basically, your file looks correct to me, except for the second RewriteEngine On
directive. If you remove that and still have issues, I don't think you have an .htaccess
problem and should look for other issues in WordPress such as redirection plugins.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.