Move rewrite rules from .htaccess to virtual host conf

sinucello

Well-known member
#1
Hi,
I`d like to move my rewrite rules from the .htaccess file in the XF document root to the virtual host configuration. If I just copy them, they don`t work. Can anybody tell me what I`d have to change to make it work? Here`s the content of my .htaccess:
Code:
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} -f [OR]
  RewriteCond %{REQUEST_FILENAME} -l [OR]
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule ^.*$ - [NC,L]
  RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]

  RewriteRule ^forum/(.*)$ /$1 [R=301,NC,L]

  RewriteRule [^/]+/([\d]+)-.+-([\d]+).html showthread.php?t=$1&page=$2 [NC,L]
  RewriteRule [^/]+/([\d]+)-.+.html showthread.php?t=$1 [NC,L]

RewriteRule ^.*$ index.php [NC,L]

</IfModule>
thank you - all the best,
Sacha
 

sinucello

Well-known member
#3
Do you have root access on your server? I think what you want is a .conf file in /etc/httpd/conf.d
Yes, I have root access and in my apache configuration there are different virtual hosts. The configuration files of the virtual hosts are stored in /etc/apache2/sites-available/name_of_host. The virt.. host conf for my forum looks like this:

Code:
<VirtualHost 111.11.111.11:80>
        ServerName myforum.de
        Redirect 301 / http://www.myforum.de/
</VirtualHost>

<VirtualHost 111.11.111.11:80>
        ServerName www.myforum.de
        DocumentRoot /var/www/vhosts/www.myforum.de/httpdocs

        php_admin_flag safe_mode Off

        ServerAlias                 myforum.com

        DirectoryIndex          index.html index.htm index.php

        ErrorDocument 401 default
        ErrorDocument 403 default
        ErrorDocument 404 default
        ErrorDocument 500 default

        RewriteEngine On
        RewriteMap lowercase int:tolower

        RewriteCond ${lowercase:%{HTTP_HOST}|NONE} ^myforum\.de$
        RewriteRule .* http://www.myforum.de%{REQUEST_URI} [R=301,L,NE]

        RewriteCond ${lowercase:%{HTTP_HOST}|NONE} ^(www\.)?myforum\.com$
        RewriteRule /(.*) http://www.myforum.de/$1 [R=301,L,NE]

        <Directory "/var/www/vhosts/www.myforum.de/httpdocs">
          [B]Options[/B]-Indexes+FollowSymLinks+Includes

          #RewriteEngine On
          #RewriteCond %{REQUEST_FILENAME} -f [OR]
          #RewriteCond %{REQUEST_FILENAME} -l [OR]
          #RewriteCond %{REQUEST_FILENAME} -d
          #RewriteRule ^.*$ - [NC,L]
          #RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
        </Directory>

</VirtualHost>

I want to transfer the rewrite rules from the .htaccess file to this virtual host configuration but copy them 1:1 doesn`t work. It seems that the environment variables or path info is different in the .htaccess file.
 

Renegade

Well-known member
#4
You have to put these in the directory tags and mention the full path to the xenforo directory.

Code:
<Directory "/var/www/path/to/your/web/dir">
  ...
  <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
  </IfModule>
</Directory>
 
Top