JasonM
JasonM

Reputation: 165

.htaccess rewrite to subfolder with codeigniter rewrite

I have a site that needs to exist in a subfolder

example.com/site

But i'm trying to use the .htaccess to remove any links that contain www (to make sure codeigniter csrf doesn't throw errors), so i've added

RewriteCond %{HTTP_HOST} ^(www\.example\.com)?$
RewriteRule ^(.*)$ http://example.com/site/$1 [R=301,L]

This works well when there is a page identifier specified, so

www.example.com/site/book rewrites to example.com/site/book

But when there is no page identifier specified I get a 404

www.example.com/site rewrites to example.com/site//usr/local/pem/vhosts/103480/webspace/httpdocs/new

I was wondering if anybody could point me in the right direction?

This is my full .htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.example\.com)?$
RewriteRule ^(.*)$ http://example.com/site/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 

Upvotes: 0

Views: 1471

Answers (2)

Felipe Alameda A
Felipe Alameda A

Reputation: 11799

You may try this instead:

RewriteCond %{HTTP_HOST} ^www\.    [NC]
RewriteCond %{REQUEST_URI} ^/(.*)  [NC]
RewriteRule .*  http://example.com/%1 [R=301,L]

Upvotes: 1

Olaf Dietsche
Olaf Dietsche

Reputation: 74018

Maybe, you're just missing a RewriteBase

Depending on where the .htaccess file is, try either

RewriteBase /

or

RewriteBase /site

Never test with 301 enabled, see this answer Tips for debugging .htaccess rewrite rules for details.

Upvotes: 1

Related Questions