WordPress redirecting to itself

WordPress redirecting to itself - If a page has internal and external outgoing links to redirecting URLs, it’s returning 3xx (301, 302, etc.) HTTP status codes standing for redirection. This issue means that the page does not exist on a permanent or temporary basis. It appears on most of the popular web browsers, usually caused by a misconfigured website. However, there are some steps you can take to ensure the issue isn’t on your side. You can find more details about redirecting URLs by reading the Google Search Central overview. In this article, we’ll go over how you can fix the WordPress redirecting to itself error on your web browser. Problem :


I have the following error in my apache2 error log (Ubuntu 18.04, local LAMP dev environment, PHP7.3), that I believe is causing a The page isn’t redirecting properly error:


Apache Error Log


[Thu Aug 13 18:23:23.412136 2020] [mpm_prefork:notice] [pid 4564] AH00169: caught SIGTERM, shutting down
[Thu Aug 13 18:23:23.601956 2020] [mpm_prefork:notice] [pid 3789] AH00163: Apache/2.4.29 (Ubuntu) OpenSSL/1.1.1g configured -- resuming normal operations
[Thu Aug 13 18:23:23.601986 2020] [core:notice] [pid 3789] AH00094: Command line: '/usr/sbin/apache2'
[Thu Aug 13 18:23:23.624733 2020] [:error] [pid 3797] avahi_entry_group_add_service_strlst("localhost") failed: Invalid host name

Site Error Log


[Wed Aug 12 23:37:06.862758 2020] [php7:notice] [pid 19274] [client 127.0.0.1:41842] WordPress database error Table 'XXXX_wpsol2p.xxxxx_blogs' doesn't exist for query SELECT  xxxxx_blogs.blog_id FROM xxxx_blogs  WHERE domain = 'localhost.example.org' AND path = '/'  ORDER BY xxxxx_blogs.blog_id ASC LIMIT 1 made by require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), require('wp-includes/ms-settings.php'), ms_load_current_site_and_network, get_site_by_path, get_sites, WP_Site_Query->query, WP_Site_Query->get_sites, WP_Site_Query->get_site_ids

I have been search online for a few hours, but have not found anyway to resolve this error.


The contents of my /etc/hosts file is as follows:


127.0.0.1   localhost 
127.0.0.1 localhost.example.org *.localhost.example.org
127.0.0.1 someothername.org www.someothername.org
127.0.0.1 blog.localhost.example.org
127.0.0.1 seminar.localhost.example.org

#The line below is for shared folder access. DP Edit.
127.0.0.1 machinename.local

My apache2 virtualhost file says:


<VirtualHost *:80>

ServerName localhost.example.org
ServerAlias localhost.example.org

# If this is the default configuration file we can use: 'ServerName localhost' or also 'ServerAlias localhost'.

ServerAdmin info@example.org

ErrorLog $APACHE_LOG_DIR/localhost.example.org.error.log
CustomLog $APACHE_LOG_DIR/localhost.example.org.access.log combined

DocumentRoot /var/www/html/example.org

<Directory /var/www/html/example.org>
Options None FollowSymLinks
# Enable .htaccess Overrides:
AllowOverride All
DirectoryIndex index.php
Order allow,deny
Allow from all
Require all granted
</Directory>

<Directory /var/www/html/example.org/wp-content>
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>

</VirtualHost>


When I run apache2ctl configtest, I also get the following error which may or may not be related:


AH00526: Syntax error on line 36 of /etc/apache2/sites-enabled/default-ssl.conf:
SSLCertificateKeyFile: file '/etc/ssl/private/ssl-cert-snakeoil.key' does not exist or is empty
Action 'configtest' failed.

NOTE: /etc/ssl/private/ssl-cert-snakeoil.keyDOES in fact exist.


My wp-config file has the following values:


/* Multisite */
define( 'NOBLOGREDIRECT', 'https://localhost.example.org' );
define( 'WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'localhost.example.org');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('WP_HOME','https://localhost.example.org');
define('WP_SITEURL','https://localhost.example.org');
define( 'SUNRISE', 'on' );

This is content of my HTACCESS file:


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_URI !^/.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/[A-F0-9]32.txt(?: Comodo DCV)?$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/(?: Ballot169)?
RewriteRule ^index.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_URI !^/.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/[A-F0-9]32.txt(?: Comodo DCV)?$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/(?: Ballot169)?
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# BEGIN W3TC Browser Cache
<IfModule mod_mime.c>
AddType text/
css .css
AddType text/x-component .htc
AddType application/x-javascript .js
AddType application/javascript .js2
AddType text/javascript .js3
AddType text/x-js .js4
AddType video/asf .asf .asx .wax .wmv .wmx
AddType video/avi .avi
AddType image/bmp .bmp
AddType application/java .class
AddType video/divx .divx
AddType application/msword .doc .docx
AddType application/vnd.ms-fontobject .eot
AddType application/x-msdownload .exe
AddType image/gif .gif
AddType application/x-gzip .gz .gzip
AddType image/x-icon .ico
AddType image/jpeg .jpg .jpeg .jpe
AddType image/webp .webp
AddType application/json .json
AddType application/vnd.ms-access .mdb
AddType audio/midi .mid .midi
AddType video/quicktime .mov .qt
AddType audio/mpeg .mp3 .m4a
AddType video/mp4 .mp4 .m4v
AddType video/mpeg .mpeg .mpg .mpe
AddType application/vnd.ms-project .mpp
AddType application/x-font-otf .otf
AddType application/vnd.ms-opentype ._otf
AddType application/vnd.oasis.opendocument.database .odb
AddType application/vnd.oasis.opendocument.chart .odc
AddType application/vnd.oasis.opendocument.formula .odf
AddType application/vnd.oasis.opendocument.graphics .odg
AddType application/vnd.oasis.opendocument.presentation .odp
AddType application/vnd.oasis.opendocument.spreadsheet .ods
AddType application/vnd.oasis.opendocument.text .odt
AddType audio/ogg .ogg
AddType application/pdf .pdf
AddType image/png .png
AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
AddType audio/x-realaudio .ra .ram
AddType image/svg+xml .svg .svgz
AddType application/x-shockwave-flash .swf
AddType application/x-tar .tar
AddType image/tiff .tif .tiff
AddType application/x-font-ttf .ttf .ttc
AddType application/vnd.ms-opentype ._ttf
AddType audio/wav .wav
AddType audio/wma .wma
AddType application/vnd.ms-write .wri
AddType application/font-woff .woff
AddType application/font-woff2 .woff2
AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
AddType application/zip .zip
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/
css A31536000
ExpiresByType text/x-component A31536000
ExpiresByType application/x-javascript A31536000
ExpiresByType application/javascript A31536000
ExpiresByType text/javascript A31536000
ExpiresByType text/x-js A31536000
ExpiresByType video/asf A31536000
ExpiresByType video/avi A31536000
ExpiresByType image/bmp A31536000
ExpiresByType application/java A31536000
ExpiresByType video/divx A31536000
ExpiresByType application/msword A31536000
ExpiresByType application/vnd.ms-fontobject A31536000
ExpiresByType application/x-msdownload A31536000
ExpiresByType image/gif A31536000
ExpiresByType application/x-gzip A31536000
ExpiresByType image/x-icon A31536000
ExpiresByType image/jpeg A31536000
ExpiresByType image/webp A31536000
ExpiresByType application/json A31536000
ExpiresByType application/vnd.ms-access A31536000
ExpiresByType audio/midi A31536000
ExpiresByType video/quicktime A31536000
ExpiresByType audio/mpeg A31536000
ExpiresByType video/mp4 A31536000
ExpiresByType video/mpeg A31536000
ExpiresByType application/vnd.ms-project A31536000
ExpiresByType application/x-font-otf A31536000
ExpiresByType application/vnd.ms-opentype A31536000
ExpiresByType application/vnd.oasis.opendocument.database A31536000
ExpiresByType application/vnd.oasis.opendocument.chart A31536000
ExpiresByType application/vnd.oasis.opendocument.formula A31536000
ExpiresByType application/vnd.oasis.opendocument.graphics A31536000
ExpiresByType application/vnd.oasis.opendocument.presentation A31536000
ExpiresByType application/vnd.oasis.opendocument.spreadsheet A31536000
ExpiresByType application/vnd.oasis.opendocument.text A31536000
ExpiresByType audio/ogg A31536000
ExpiresByType application/pdf A31536000
ExpiresByType image/png A31536000
ExpiresByType application/vnd.ms-powerpoint A31536000
ExpiresByType audio/x-realaudio A31536000
ExpiresByType image/svg+xml A31536000
ExpiresByType application/x-shockwave-flash A31536000
ExpiresByType application/x-tar A31536000
ExpiresByType image/tiff A31536000
ExpiresByType application/x-font-ttf A31536000
ExpiresByType application/vnd.ms-opentype A31536000
ExpiresByType audio/wav A31536000
ExpiresByType audio/wma A31536000
ExpiresByType application/vnd.ms-write A31536000
ExpiresByType application/font-woff A31536000
ExpiresByType application/font-woff2 A31536000
ExpiresByType application/vnd.ms-excel A31536000
ExpiresByType application/zip A31536000
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/
css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/bmp application/java application/msword application/vnd.ms-fontobject application/x-msdownload image/x-icon image/webp application/json application/vnd.ms-access application/vnd.ms-project application/x-font-otf application/vnd.ms-opentype application/vnd.oasis.opendocument.database application/vnd.oasis.opendocument.chart application/vnd.oasis.opendocument.formula application/vnd.oasis.opendocument.graphics application/vnd.oasis.opendocument.presentation application/vnd.oasis.opendocument.spreadsheet application/vnd.oasis.opendocument.text audio/ogg application/pdf application/vnd.ms-powerpoint image/svg+xml application/x-shockwave-flash image/tiff application/x-font-ttf application/vnd.ms-opentype audio/wav application/vnd.ms-write application/font-woff application/font-woff2 application/vnd.ms-excel
<IfModule mod_mime.c>
# DEFLATE by extension
AddOutputFilter DEFLATE js css htm html xml
</IfModule>
</
IfModule>
<FilesMatch ".(css|htc|less|js|js2|js3|js4|CSS|HTC|LESS|JS|JS2|JS3|JS4)$">
FileETag MTime Size
<IfModule mod_headers.c>
Header unset Set-Cookie
</IfModule>
</FilesMatch>
<FilesMatch "
.(html|htm|rtf|rtx|svg|txt|xsd|xsl|xml|HTML|HTM|RTF|RTX|SVG|TXT|XSD|XSL|XML)$">
FileETag MTime Size
<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
</IfModule>
</
FilesMatch>
<FilesMatch ".(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|webp|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|_otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|_ttf|wav|wma|wri|woff|woff2|xla|xls|xlsx|xlt|xlw|zip|ASF|ASX|WAX|WMV|WMX|AVI|BMP|CLASS|DIVX|DOC|DOCX|EOT|EXE|GIF|GZ|GZIP|ICO|JPG|JPEG|JPE|WEBP|JSON|MDB|MID|MIDI|MOV|QT|MP3|M4A|MP4|M4V|MPEG|MPG|MPE|MPP|OTF|_OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT|OGG|PDF|PNG|POT|PPS|PPT|PPTX|RA|RAM|SVG|SVGZ|SWF|TAR|TIF|TIFF|TTF|TTC|_TTF|WAV|WMA|WRI|WOFF|WOFF2|XLA|XLS|XLSX|XLT|XLW|ZIP)$">
FileETag MTime Size
<IfModule mod_headers.c>
Header unset Set-Cookie
</IfModule>
</FilesMatch>
<FilesMatch "
.(bmp|class|doc|docx|eot|exe|ico|webp|json|mdb|mpp|otf|_otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|pot|pps|ppt|pptx|svg|svgz|swf|tif|tiff|ttf|ttc|_ttf|wav|wri|woff|woff2|xla|xls|xlsx|xlt|xlw|BMP|CLASS|DOC|DOCX|EOT|EXE|ICO|WEBP|JSON|MDB|MPP|OTF|_OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT|OGG|PDF|POT|PPS|PPT|PPTX|SVG|SVGZ|SWF|TIF|TIFF|TTF|TTC|_TTF|WAV|WRI|WOFF|WOFF2|XLA|XLS|XLSX|XLT|XLW)$">
<IfModule mod_headers.c>
Header unset Last-Modified
</IfModule>
</
FilesMatch>
<IfModule mod_headers.c>
Header set Referrer-Policy ""
</IfModule>
# END W3TC Browser Cache
# BEGIN W3TC Page Cache core
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %HTTPS =on
RewriteCond %REQUEST_URI !^/.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/[A-F0-9]32.txt(?: Comodo DCV)?$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/(?: Ballot169)?
RewriteRule .* - [E=W3TC_SSL:_ssl]
RewriteCond %SERVER_PORT =443
RewriteCond %REQUEST_URI !^/.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/[A-F0-9]32.txt(?: Comodo DCV)?$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/(?: Ballot169)?
RewriteRule .* - [E=W3TC_SSL:_ssl]
RewriteCond %HTTP:X-Forwarded-Proto =https [NC]
RewriteCond %REQUEST_URI !^/.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/[A-F0-9]32.txt(?: Comodo DCV)?$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/(?: Ballot169)?
RewriteRule .* - [E=W3TC_SSL:_ssl]
RewriteCond %HTTP:Accept-Encoding gzip
RewriteCond %REQUEST_URI !^/.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/[A-F0-9]32.txt(?: Comodo DCV)?$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/(?: Ballot169)?
RewriteRule .* - [E=W3TC_ENC:_gzip]
RewriteCond %HTTP_COOKIE w3tc_preview [NC]
RewriteCond %REQUEST_URI !^/.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/[A-F0-9]32.txt(?: Comodo DCV)?$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/(?: Ballot169)?
RewriteRule .* - [E=W3TC_PREVIEW:_preview]
RewriteCond %REQUEST_METHOD !=POST
RewriteCond %QUERY_STRING =""
RewriteCond %REQUEST_URI /$
RewriteCond %HTTP_COOKIE !(comment_author|wp-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle) [NC]
RewriteCond "%DOCUMENT_ROOT/wp-content/cache/page_enhanced/%HTTP_HOST/%REQUEST_URI/_index%ENV:W3TC_SSL%ENV:W3TC_PREVIEW.html%ENV:W3TC_ENC" -f
RewriteCond %REQUEST_URI !^/.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/[A-F0-9]32.txt(?: Comodo DCV)?$
RewriteCond %REQUEST_URI !^/.well-known/pki-validation/(?: Ballot169)?
RewriteRule .* "/wp-content/cache/page_enhanced/%HTTP_HOST/%REQUEST_URI/_index%ENV:W3TC_SSL%ENV:W3TC_PREVIEW.html%ENV:W3TC_ENC" [L]
</IfModule>
# END W3TC Page Cache core
<IfModule mime_module>
AddHandler application/x
-httpd-ea-php73 .php .php5 .phtml
</IfModule>

The output of curl --insecure --head https://localhost.example.org is as follows:


HTTP/1.1 302 Found
Date: Fri, 14 Aug 2020 02:45:51 GMT
Server: Apache/2.4.29 (Ubuntu)
Location: https://localhost.example.org
Content-Type: text/html; charset=UTF-8

It appears to be redirecting to the correct location, even though I am getting the redirection error.


To ensure that the error is NOT being caused by wordpress, I have tried the following:



  1. disabled all plugins = redirecting error still present NOTE: no new htaccess was generated by wp

  2. used db query to update siteurl value to match localhost UPDATE wp_options SET option_value='https://localhost.example.org' WHERE option_name='siteurl' = redirecting error still present

  3. updated wp-config to reflect define('WP_HOME','https://localhost.example.org');
    define('WP_SITEURL','https://localhost.exmple.org');


NOTE: I previously had modsecurity and the evasive modules installed, but I have since disabled, uninstalled, and purged any trace of them.


Any ideas?


Solution :

This might help?


In your apache config, you see these lines:


<VirtualHost *:80>
...
</VirtualHost>

This means that the config in between matches for all hostnames on port 80 (HTTP non-SSL).


But...


In your wp-config file, these lines:


define( 'NOBLOGREDIRECT', 'https://localhost.example.org' );
define('WP_HOME','https://localhost.example.org');
define('WP_SITEURL','https://localhost.example.org');

Are forcing your Wordpress install to use SSL even if you initially access on non-SSL. Additionally, in your htaccess you appear to be running the plugin W3TC which is also forcing SSL


RewriteCond %HTTPS =on

The reason all of that is relevant is that ultimately, the setup will force SSL to be used between client and server at all times, which then means your virtualhost config as pasted in your answer is irrelevant. Instead, the Apache setup will look for the first virtualhost that matches with traffic on port 443, e.g.


<VirtualHost *:443>

This may be in an entirely different config file, such as in your case: /etc/apache2/sites-enabled/default-ssl.conf.


So its possible that the reason this is not working is because that other config file doesn't have the right hostname/config for your purposes. So you may have two options:



  1. Don't use SSL for the moment, until you are sure all else works

  2. Use SSL but make sure your config is correctly setup for traffic on port 443 and you have a valid SSL cert.


If you don't have a valid cert, at least you will get a different browser error.


We hope that this article has helped you resolve the redirects, wordpress, apache2 error in your web browsers. Enjoy browsing the internet uninterrupted!

Comments

Popular posts from this blog

How to redirect to any domain [duplicate]

"302 found" for index page bad for SEO?

Create redirect from url like www.example.us/?p=100&option=