title: Problems with .htaccess when I have Drupal and phpBB
body: <p>In my site I have both Drupal and phpBB installed.</p>
  
  <p>You access Drupal by going to <a href="http://www.example.com" rel="nofollow">http://www.example.com</a> and phpBB by going to <a href="http://www.example.com/forum/" rel="nofollow">http://www.example.com/forum/</a>. The problem is, I am trying to set up better links for phpBB (that is, I want go to "forum/f2" instead of "forum/viewforum.php?f=2").</p>
  
  <p>I'm not exactly good with .htaccess, so here's my modified Drupal .htaccess (could anyone tell me how to fix it?):</p>
  
  <pre><code>#
  # Apache/PHP/Drupal settings:
  #
  
  # Protect files and directories from prying eyes.
  &lt;FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$"&gt;
    Order allow,deny
  &lt;/FilesMatch&gt;
  
  # Don't show directory listings for URLs which map to a directory.
  Options -Indexes
  
  # Follow symbolic links in this directory.
  Options +FollowSymLinks
  
  # Make Drupal handle any 404 errors.
  ErrorDocument 404 /index.php
  
  # Set the default handler.
  DirectoryIndex index.php index.html index.htm
  
  # Override PHP settings that cannot be changed at runtime. See
  # sites/default/default.settings.php and drupal_initialize_variables() in
  # includes/bootstrap.inc for settings that can be changed at runtime.
  
  # PHP 5, Apache 1 and 2.
  &lt;IfModule mod_php5.c&gt;
    php_flag magic_quotes_gpc                 off
    php_flag magic_quotes_sybase              off
    php_flag register_globals                 off
    php_flag session.auto_start               off
    php_value mbstring.http_input             pass
    php_value mbstring.http_output            pass
    php_flag mbstring.encoding_translation    off
  &lt;/IfModule&gt;
  
  # Requires mod_expires to be enabled.
  &lt;IfModule mod_expires.c&gt;
    # Enable expirations.
    ExpiresActive On
  
    # Cache all files for 2 weeks after access (A).
    ExpiresDefault A1209600
  
    &lt;FilesMatch \.php$&gt;
      # Do not allow PHP scripts to be cached unless they explicitly send cache
      # headers themselves. Otherwise all scripts would have to overwrite the
      # headers set by mod_expires if they want another caching behavior. This may
      # fail if an error occurs early in the bootstrap process, and it may cause
      # problems if a non-Drupal PHP file is installed in a subdirectory.
      ExpiresActive Off
    &lt;/FilesMatch&gt;
  &lt;/IfModule&gt;
  
  # Various rewrite rules.
  &lt;IfModule mod_rewrite.c&gt;
    RewriteEngine on
  
    # Block access to "hidden" directories whose names begin with a period. This
    # includes directories used by version control systems such as Subversion or
    # Git to store control files. Files whose names begin with a period, as well
    # as the control files used by CVS, are protected by the FilesMatch directive
    # above.
    #
    # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is
    # not possible to block access to entire directories from .htaccess, because
    # &lt;DirectoryMatch&gt; is not allowed here.
    #
    # If you do not have mod_rewrite installed, you should remove these
    # directories from your webroot or otherwise protect them from being
    # downloaded.
    RewriteRule "(^|/)\." - [F]
  
    # If your site can be accessed both with and without the 'www.' prefix, you
    # can use one of the following settings to redirect users to your preferred
    # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
    #
    # To redirect all users to access the site WITH the 'www.' prefix,
    # (http://example.com/... will be redirected to http://www.example.com/...)
    # uncomment the following:
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    #
    # To redirect all users to access the site WITHOUT the 'www.' prefix,
    # (http://www.example.com/... will be redirected to http://example.com/...)
    # uncomment the following:
    # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    # RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]
  
    # Modify the RewriteBase if you are using Drupal in a subdirectory or in a
    # VirtualDocumentRoot and the rewrite rules are not working properly.
    # For example if your site is at http://example.com/drupal uncomment and
    # modify the following line:
    # RewriteBase /drupal
    #
    # If your site is running in a VirtualDocumentRoot at http://example.com/,
    # uncomment the following line:
    RewriteBase /
  
    # PHPBB:
    RewriteRule ^forum/f([a-zA-Z0-9]+)$ forum/viewforum.php?e=$1 [NC]
  
    # Pass all requests not referring directly to files in the filesystem to
    # index.php. Clean URLs are handled in drupal_environment_initialize().
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} ^/(.*)$
    RewriteCond %{REQUEST_URI} !^/forum/(.*)$
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    #RewriteCond %{REQUEST_URI} !=/favicon.ico
    #RewriteRule ^ index.php [L]
  
    # Rules to correctly serve gzip compressed CSS and JS files.
    # Requires both mod_rewrite and mod_headers to be enabled.
    &lt;IfModule mod_headers.c&gt;
      # Serve gzip compressed CSS files if they exist and the client accepts gzip.
      RewriteCond %{HTTP:Accept-encoding} gzip
      RewriteCond %{REQUEST_FILENAME}\.gz -s
      RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
  
      # Serve gzip compressed JS files if they exist and the client accepts gzip.
      RewriteCond %{HTTP:Accept-encoding} gzip
      RewriteCond %{REQUEST_FILENAME}\.gz -s
      RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
  
      # Serve correct content types, and prevent mod_deflate double gzip.
      RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
      RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]
  
      &lt;FilesMatch "(\.js\.gz|\.css\.gz)$"&gt;
        # Serve correct encoding type.
        Header set Content-Encoding gzip
        # Force proxies to cache gzipped &amp; non-gzipped css/js files separately.
        Header append Vary Accept-Encoding
      &lt;/FilesMatch&gt;
    &lt;/IfModule&gt;
  &lt;/IfModule&gt;
  </code></pre>