I installed cms at Linux server I want to redirect every visit to to, while hide "cms" in the URLs.

Several attempts have been tried but failed.

1> edit /etc/httpd/conf/httpd.conf

DocumentRoot "/var/www/html" -->   DocumentRoot "/var/www/html/cms"

This only works for index page. Hyperlinks in the index "" will become unavailable in this case, as /cms/pages no longer exist in the DocumentRoot directory "/var/www/html/cms".

2> edit /etc/httpd/conf/httpd.conf

Redirect / /cms/

This will cause infinite loop

Any idea on this?


You could do this with mod_rewrite

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /cms/$1 [L]

You can place this in your /etc/httpd/conf/httpd.conf inside the vhost you defined (if you have one) or in your <Directory> otherwise.

This will redirect all requests made to /cms/something to /something while still still fetching it from /cms/something.

  • Could you please provide more details? I edited httpd.conf to AllowOverride All, and then created a .htaccess file under /var/www/html, containing your scripts. It doesn't work so far. – Andrew May 16 '12 at 9:03
  • @beicha: Updated – Bart De Vos May 16 '12 at 9:08
  • It still doesn't work, even I place this in both <Directory /> and <Directory /var/www/html> :( – Andrew May 16 '12 at 10:09
  • Take a look here: serverfault.com/questions/120488/… – Bart De Vos May 16 '12 at 13:52
  • This method should work, although my final solution is just mv * ../, and modify some other config files. – Andrew May 18 '12 at 3:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.