Rewrite Rules Setup

You are here:
< Back

Migrate Apache Rewrite Rules to OpenLiteSpeed

For rewrite rules, OpenLiteSpeed uses the same syntax as Apache’s mod_rewrite so both servers can follow the same rules.

If you migrate rewrite rules from the Apache document root .htaccess, or  /subfolder/.htaccesss, you will need to create a / context (to match the Apache document root) , or /subfolder/ context (to match Apache subfolders or directories). Then, place the exact rewrite rules there without any change.

If you migrate rewrite rules from Apache virtual host configuration, the exact same rules can be copied to OLS virtual host rewrite tab without any change.

If you copy rewrite rule from Apache doc root .htaccess to OLS virtual host rewrite tab directly, you may need to make some changes to make the rules work. Why? In Apache rewrite rules, sometimes virtual host level rewrite rules and .htacess level rewrite rules can be different. Within Apache, you may need to make changes when migrating rules from virtual host conf to .htaccess.  Similarly, you may need to make some changes when copying the rewrite rule from Apache doc root .htaccess (htaccess level rewrite) to OLS virtual host rewrite tab( virtual host level rewrite).

The following will explain these migration scenarios in detail.

1. Migrate Apache Rewrite Rules from Document Root .htaccess

Go to OpenLiteSpeed Webadmin > VirtualHost > Edit your vhost > Context tab. After that, create a new static context. The fields that need to be edited are:

URI – put here only /
Location – location of the public directory for your webpage
Enable RewriteYes
Rewrite Rules – Put the rewrite rules here

Here is an example image:

2. Migrate from Apache Document Root .htaccess to OpenLiteSpeed Vhost Rewrite Tab

Lets say that your document root is /home/user/public_html, and you have an .htaccess file there. In this file you have for example:

RewriteRule ^adminPages/(.*)$ admin-panel/$1 [L]

To Migrate that rules and that style of rules you will need to make small change. The new rule will look like this:

RewriteRule ^/?adminPages/(.*)$ admin-panel/$1 [L]

Put that rule in OpenLiteSpeed > VirtualHost > Edit your host > Rewrite tab.

As you can see we add /? before adminPage. That way OLS will know what to catch and redirect.

3. Migrate from Apache vhost to OpenLiteSpeed vhost

In a virtual host configuration, the rewrite rule pattern will initially be matched against the part of the URL after the hostname and port, and before the query string (e.g. /app1/index.html). If you copy the rewrite rules for your webpage from the Apache vhost file you do not need to make any changes, as they will work in OpenLiteSpeed.

For example if you have in Apache vhost:

<VirtualHost *>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^
RewriteRule ^/(.*)$$1 [L,R=301]

In OpenLiteSpeed, it will look the same:

RewriteCond %{HTTP_HOST} ^
RewriteRule ^/(.*)$$1 [L,R=301]

Put that rule in OpenLiteSpeed > VirtualHost > Edit your host > Rewrite tab.

Rewrite for Subdirectory

The RewriteBase directive is not supported by OpenLiteSpeed and you will need to make minor changes to your rewrite rules. For better understanding we will give you an example:

In an .htaccess file:

RewriteBase /joomla
RewriteRule .* index.php [F]

In a virtual host configuration (and in OpenLiteSpeed):

RewriteRule /.* /joomla/index.php [F]

Useful Examples

Default WordPress rules:

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

Redirect to HTTPS:

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$$1 [R,L]

Redirect www to HTTPS:

RewriteCond %{HTTP_HOST} ^www\.your-domain\.com
RewriteRule (.*)$1 [R=301,L]

Drupal 8:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^/ index.php [L]


RewriteRule . /laravel/public/index.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)$ index.php?/$1 [L]