Woocommerce 404 after migration

#1
Hi team,

I've tried to migrate a Woocommerce site from a shared host with OSL to Runcloud & Vultr with OSL, but I'm stuck.
The whole migration went pretty smooth, I just created a Wordpress web app in Runcloud and then uploaded the database and files to the server, extracted everything and I could log into the backend.

The backend is working fine, but any time I want to reach the landing page or any of the product or category pages, I just get a 404 error page from LiteSpeed.

I've saved Permalinks, flushed the LSCache, changed .htaccess, fixed file and folder permissions, but all to no avail.

I've been trying to gain access to the LiteSpeed Admin Panel, but I'm not sure whether Runcloud actually has one? It's not mentioned anywhere...

Do you have any ideas or suggestions please?

Thanks so much for your help in advance!


Cheers
Clemens

This is my .htacess:

Code:
# BEGIN WordPress
<IfModule mod_rewrite.c>
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]
</IfModule>
# END WordPress

# Wordfence WAF
<IfModule LiteSpeed>
php_value auto_prepend_file '/home/runcloud/webapps/XXX/shop/wordfence-waf.php'
</IfModule>
<IfModule lsapi_module>
php_value auto_prepend_file '/home/runcloud/webapps/XXX/shop/wordfence-waf.php'
</IfModule>
<Files ".user.ini">
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order deny,allow
    Deny from all
</IfModule>
</Files>
# END Wordfence WAF

# BEGIN LSCACHE
## LITESPEED WP CACHE PLUGIN - Do not edit the contents of this block! ##
<IfModule LiteSpeed>
RewriteEngine On
CacheLookup on
RewriteRule .* - [E=Cache-Control:no-autoflush]
RewriteRule \.litespeed_conf\.dat - [F,L]

### marker ASYNC start ###
RewriteCond %{REQUEST_URI} /wp-admin/admin-ajax\.php
RewriteCond %{QUERY_STRING} action=async_litespeed
RewriteRule .* - [E=noabort:1]
### marker ASYNC end ###

### marker MOBILE start ###
RewriteCond %{HTTP_USER_AGENT} Mobile|Android|Silk/|Kindle|BlackBerry|Opera\ Mini|Opera\ Mobi [NC]
RewriteRule .* - [E=Cache-Control:vary=%{ENV:LSCACHE_VARY_VALUE}+ismobile]
### marker MOBILE end ###

### marker CACHE RESOURCE start ###
RewriteRule shop/wp-content/.*/[^/]*(responsive|css|js|dynamic|loader|fonts)\.php - [E=cache-control:max-age=3600]
### marker CACHE RESOURCE end ###

### marker LOGIN COOKIE start ###
RewriteRule .? - [E="Cache-Vary:,wp-postpass_6b8a7164a022eaf07882822b839b70a5"]
### marker LOGIN COOKIE end ###

### marker WEBP start ###
RewriteCond %{HTTP_ACCEPT} "image/webp"
RewriteRule .* - [E=Cache-Control:vary=%{ENV:LSCACHE_VARY_VALUE}+webp]
RewriteCond %{HTTP_USER_AGENT} iPhone.*Version/(\d{2}).*Safari
RewriteCond %1 >13
RewriteRule .* - [E=Cache-Control:vary=%{ENV:LSCACHE_VARY_VALUE}+webp]
### marker WEBP end ###

### marker DROPQS start ###
CacheKeyModify -qs:fbclid
CacheKeyModify -qs:gclid
CacheKeyModify -qs:utm*
CacheKeyModify -qs:_ga
### marker DROPQS end ###
</IfModule>
## LITESPEED WP CACHE PLUGIN - Do not edit the contents of this block! ##
# END LSCACHE

# BEGIN NON_LSCACHE
## LITESPEED WP CACHE PLUGIN - Do not edit the contents of this block! ##
### marker BROWSER CACHE start ###
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType application/pdf A31557600
ExpiresByType image/x-icon A31557600
ExpiresByType image/vnd.microsoft.icon A31557600
ExpiresByType image/svg+xml A31557600

ExpiresByType image/jpg A31557600
ExpiresByType image/jpeg A31557600
ExpiresByType image/png A31557600
ExpiresByType image/gif A31557600
ExpiresByType image/webp A31557600

ExpiresByType video/ogg A31557600
ExpiresByType audio/ogg A31557600
ExpiresByType video/mp4 A31557600
ExpiresByType video/webm A31557600

ExpiresByType text/css A31557600
ExpiresByType text/javascript A31557600
ExpiresByType application/javascript A31557600
ExpiresByType application/x-javascript A31557600

ExpiresByType application/x-font-ttf A31557600
ExpiresByType application/x-font-woff A31557600
ExpiresByType application/font-woff A31557600
ExpiresByType application/font-woff2 A31557600
ExpiresByType application/vnd.ms-fontobject A31557600
ExpiresByType font/ttf A31557600
ExpiresByType font/otf A31557600
ExpiresByType font/woff A31557600
ExpiresByType font/woff2 A31557600

</IfModule>
### marker BROWSER CACHE end ###

## LITESPEED WP CACHE PLUGIN - Do not edit the contents of this block! ##
# END NON_LSCACHE

RewriteEngine On
RewriteOptions inherit
<Files 403.shtml>
order allow,deny
allow from all
</Files>

# BEGIN LiteSpeed
# The directives (lines) between "BEGIN LiteSpeed" and "END LiteSpeed" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule Litespeed>
SetEnv noabort 1
</IfModule>
# END LiteSpeed
 

serpent_driver

Well-Known Member
#2
I've tried to migrate a Woocommerce site from a shared host with OSL
If OSL means OpenLiteSpeed (OLS) then you should use OpenLiteSpeed forum. This forum ist for LiteSpeed Enterprise (LSWS) only.

Btw. You should not follow WordFence recommendation to set noabort directive as it is a high risk to allow all scripts to run without a timeout. Noabort directive must be limited to a certain script to prevent hackers to misuse this directive. WordFence already knows it since years, but they still publish this wrong code.
 
#3
If OSL means OpenLiteSpeed (OLS) then you should use OpenLiteSpeed forum. This forum ist for LiteSpeed Enterprise (LSWS) only.

Btw. You should not follow WordFence recommendation to set noabort directive as it is a high risk to allow all scripts to run without a timeout. Noabort directive must be limited to a certain script to prevent hackers to misuse this directive. WordFence already knows it since years, but they still publish this wrong code.
Thank you for your response!

Turns out it wasn't OSLs fault at all. The original Wordpress install was in a sub-directory, so I still had the Site URL with subdirectory. After speaking to Runcloud, they suggested I add the subdirectory to the web app URL and remove it from Wordpress.

Well, that seems to have done the trick.

Thanks again for your help!
 
Top