Solution multisite htaccess cleanURL

时间:2022-04-09 00:25:02

My solution to getting Clean URL working with my multisite setup drupal 4.7

I added Alias to my httpd.conf apache file:

<VirtualHost *:80>
# Alias for all php drupal sites
Alias /abc /var/www/html/drupal
Alias /def /var/www/html/drupal
Alias /xyz /var/www/html/drupal
</VirtualHost>

My setup has 4 sites /drupal, /abc, /def, /xyz all files are in the /drupal directory

  • url=/drupal (sites/default/)
  • url=/abc (sites/localhost.abc/)
  • url=/def (sites/localhost.def/)
  • url=/xyz (sites/localhost.xyz/)

In the /drupal/.htacess file. I added a RewriteCond %{REQUEST_URI} condition for
each site, and so have separate RewriteRule for each site.
No need for the RewriteBase directive, leave it commented out:

#RewriteBase /drupal  DO NOT NEED THIS, COMMENT OUT

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/drupal/(.*)$
RewriteRule ^(.*)$ /drupal/index.php?q=$1 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/abc/(.*)$
RewriteRule ^(.*)$ /abc/index.php?q=$1 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/def/(.*)$
RewriteRule ^(.*)$ /def/index.php?q=$1 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/xyz/(.*)$
RewriteRule ^(.*)$ /xyz/index.php?q=$1 [L,QSA]

Note: each site has its own database aswell as files, modules and themes directories in the corresponding sites/localhost.site/ directory.