• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

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>