Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Alright here is the situation: I use to have my codeigniter site at bluehost were I did not have root access, I have since moved that site to rackspace. I have not changed any of the PHP code yet there has been some unexpected behavior.

Unexpected Behavior: Both old and new resolve to the robots file The old bluehost setup resolves to my codeigniter 404 error page. The rackspace config resolves to: Not Found The requested URL /robots.txt/ was not found on this server.

**This instance leads me to believe that there could be a problem with my mod rewrites or lack there of. The first one produces the error correctly through php while it seems the second senario lets the server handle this error.

The next instance of this problem is even more troubling: ' x 1-1%2F2 white/'

New site results in: Bad Request Your browser sent a request that this server could not understand.

Old site results in: The actual page being loaded and the search term being unencoded.

I have to assume that this has something to do with the fact that when I went to the new server I went from root level htaccess file to httpd.conf file and virtual server default and default-ssl. Here they are:

Default file:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
    Options +FollowSymLinks
    AllowOverride None

<Directory /var/www>
    Options -Indexes +FollowSymLinks -MultiViews
    AllowOverride None
    Order allow,deny
    allow from all

    RewriteEngine On
    RewriteBase /

    # force no www. (also does the IP thing)
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^mysite\.com [NC]
    RewriteRule ^(.*)$$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]

    # index.php remove any index.php parts
    RewriteCond %{THE_REQUEST} /index\.(php|html)
    RewriteRule (.*)index\.(php|html)(.*)$ /$1$3 [r=301,L]

RewriteCond $1 !^(index\.php|assets|robots\.txt|sitemap\.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from ::1/128


Default-ssl File Basically the same as the Default file above only used to handle ssl port

httpd.conf File Just a lot of stuff from html5 boiler plate, I will post it if need be

Old htaccess file

<IfModule mod_rewrite.c>

# index.php remove any index.php parts
RewriteCond %{THE_REQUEST} /index\.(php|html)
RewriteRule (.*)index\.(php|html)(.*)$ /$1$3 [r=301,L]

RewriteCond $1 !^(index\.php|assets|robots\.txt|sitemap\.xml|favicon\.ico)
RewriteRule ^(.*)/$ /$1 [r=301,L]

RewriteCond $1 !^(index\.php|assets|robots\.txt|sitemap\.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]

This is the redirect responsible for directing every request to the index.php file to begin with...this is where i think the problem is (might have something to do with the directory? maybe something with my apache config?

RewriteCond $1 !^(index.php|assets|robots.txt|sitemap.xml|favicon.ico)

RewriteRule ^(.*)$ /index.php/$1 [L]

Any Help would be hugely appreciated!!

share|improve this question

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.