Hey guys, Yesterday I did an interesting server configuration. Actually we had a rails app hosted on server which is using passenger(a.k.a mod_rails). This application can be access by going to http://domain.com . Also we had a wordpress running which could be access by going to http://blog.domain.com.
But, for SEO sake I had to change configuration so that wordpress can be access by http://domain.com/blog instead of http://blog.domain.com/
The problem was if I configure wordpress for http://domain.com/blog and go to this url, the request was handled by rails app because of domain.com virtualhost.
So what I did? I changed apache virtualhost configuration for http://blog.domain.com and http://domain.com as:
<virtualHost *> ServerName blog.domain.com DocumentRoot /var/www/html/wordpress/ <directory "/var/www/html/wordpress/"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </directory> </virtualHost> <virtualHost *> ServerName domain.com ServerAlias www.domain.com DocumentRoot /var/www/html/domain/current/public <directory "/var/www/html/domain/current"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </directory> RailsAllowModRewrite on RewriteRule ^/blog/?(.*)$ http://blog.domain.com/$1 [P,NC,L] </virtualHost>
Also I created a symbolic link to wordpress installation directory under rails public folder(ln -s /var/www/html/wordpress /var/www/html/railsapp/public/blog).
Now remember to change your wordpress address and blog address options to http://domain.com/blog under settings tab of wp-admin section.(Thanks Amit for pointing this out)
I restarted apache and it worked fine. WordPress was running at http://domain.com/blog and rails app was as http://domain.com/.
Update: If you want to change your wordpress permalink structure in account of SEO please change “AllowOverride None” to “AllowOverride All” as shown in image below.