My website labored fine on my small other hosting however I've submitted this to 123reg hosting my rewrite Web addresses no more work. This really is my htaccess file. The house page shows but almost every other page does not load correctly, just shows the house page.

Options +FollowSymLinks RewriteEngine on

RewriteCond $1 !^(index\.php|js|img|fonts|data|css|uploaded|mobile_devices|audioplayer|emails|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

Any ideas?

I apologize but this RewriteCond is really a non-sense:

RewriteCond $1 !^(index\.php|js|img|fonts|data|css|uploaded|mobile_devices|audioplayer|emails|robots\.txt)

Since the first argument mut be something which is available i.e.:

see mod_rewrite.html#rewritecond:

  • %
  • %
  • %
  • %Submitted


  • %

The $1 pertains to something which must have been pre-calculated: see here to learn more:

Using parentheses in Pattern or within the CondPatterns causes back-references to become internally produced. These may later be recommended while using strings $N and %N (see below), for creating the Substitution and TestString strings.

You might have forgotten something inside your question, or (worse) some rewrite rules out of your previous provider.

I'd reckon that however , you're located on the setup which gives you PHP implemented as CGI or FastCGI.

You could attempt this:

RewriteCond $1 !^(index\.php|js|img|fonts|data|css|uploaded|mobile_devices|audioplayer|emails|robots\.txt)
RewriteRule ^(.*)$ /index.php?/$1 [L]

And you ought to make sure to edit your application/config/config.php file. Particularly, change:

$config['uri_protocol'] = 'AUTO';


$config['uri_protocol'] = 'QUERY_STRING';

This is because CGI/FCGI does not provide PHP using the PATH_INFO variable, which causes it to be neccesary to transmit the data because the query string to CI.