[apache] mod_rewrite & mod_vhost_alias probleem

Pagina: 1
Acties:
  • 108 views sinds 30-01-2008
  • Reageer

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Ik heb een heel vreemd probleem bij een combinatie van mod_rewrite en mod_vhost_alias.

Ik heb de volgende regel in de apache configuratie, die zorgt ervoor dat alle domeinen vanuit de juiste directory worden geladen.

code:
1
VirtualDocumentRoot /var/www/%-2.0.%-1.0/%-3+


DIt laadt een verzoek aan www.test.nl uit /var/www/test.nl/www . Tot zover gaat het allemaal goed. Wanneer ik echter een .htaccess met een RewriteRule aanmaak gaat het fout.

Zodra er een URL gerewrite wordt krijg ik een foutmelding van apache dat het bestand niet gevonden kan worden. Het gekke is dat er dan een absolute bestandslocatie wordt doorgegeven (en dus niet relatief van de webroot). Het bestand waarvan wordt gezegd bestaat echter wel en heeft de juiste permissies. Ik krijg dan de volgende fout:
The requested URL /var/www/test.nl/www/contact.php was not found on this server.
met de volgende RewriteRule:

code:
1
RewriteRule     ^contact$                               contact.php                                     [L]


Terwijl het bestand wel degelijk bestaat. MultiViews heb ik in de .htaccess al uitgezet. Op een vergelijkbare server (ook gentoo) werkt het wel, daar maak ik geen gebruik van vhosts.

Mijn volledige vhosts.conf:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
NameVirtualHost *:80

<IfDefine DYNAMIC_VHOSTS>
  UseCanonicalName Off
  LogFormat "%V %h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"" dynamic_vhosts
  CustomLog logs/access_log dynamic_vhosts

  <VirtualHost *:80>
    <Directory "/var/www">
      Options -Indexes FollowSymLinks MultiViews
      AllowOverride All
      Order allow,deny
      Allow from all
    </Directory>

    <IfModule mod_vhost_alias.c>
      VirtualDocumentRoot /var/www/%-2.0.%-1.0/%-3+
      VirtualScriptAlias /var/www/%-2.0.%-1.0/%-3+/cgi-bin

      <DirectoryMatch "^/var/www/[^/]+/cgi-bin">
        AllowOverride None
        Options ExecCGI
        <IfModule mod_access.c>
          Order allow,deny
          Allow from all
        </IfModule>
      </DirectoryMatch>
    </IfModule>
  </VirtualHost>
</IfDefine>


Zo mogelijk nog vreemder is dat de access_log een 200 status aangeeft (ipv de 404 die ik in de browser krijg)
test.nl xx.xx.xx.xx - - [14/Jun/2007:22:54:18 +0200] "GET /contact HTTP/1.1" 200 290 "http://test.nl/" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty)"

Ik ontken het bestaan van IE.


  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Ik ben nu ietsjes verder gekomen met dit probleem. Het blijkt een bug te zijn in mod_rewrite waarbij ten onrechte het absolute path er extra voor wordt geplakt.

Het bugreport staat op: http://issues.apache.org/bugzilla/show_bug.cgi?id=38642 . Ik heb de patch gebruikt en gechecked of het gepatchte bestand inderdaad klopt en vervolgens opnieuw gecompileerd. Dit lostte het probleem niet op.

Omdat uit de rewrite_log blijkt dat het probleem juist voorkomt na een [INTERNAL REDIRECT] heb ik ook nog dit uit de patch verwijdert:

code:
1
2
3
4
5
6
7
8
@@ -1691,6 +1691,7 @@
                        "[INTERNAL REDIRECT]", dconf->directory, r->filename);
             r->filename = apr_pstrcat(r->pool, "redirect:", r->filename, NULL);
             r->handler = "redirect-handler";
+            apr_table_unset(r->notes,"substapplied");
             return OK;
         }
     }


Wederom compiled en apache opnieuw gestart en het werkt nog steeds niet. Ik ben er nu wel achter dat het wel werkt als ik in de RewriteRule een / neerzet voor de replace tekst het wel werkt. Ik wil het graag ook werkend hebben zonder.

Heeft iemand een idee hoe dit kan worden opgelost?

rewrite_log
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#827dcf0/initial] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] strip per-dir prefix: /var/www/vhosts/test.nl/test.nl/contact -> contact
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#827dcf0/initial] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] applying pattern '^inloggen$' to uri 'contact'
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#827dcf0/initial] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] strip per-dir prefix: /var/www/vhosts/test.nl/test.nl/contact -> contact
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#827dcf0/initial] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] applying pattern '^home$' to uri 'contact'
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#827dcf0/initial] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] strip per-dir prefix: /var/www/vhosts/test.nl/test.nl/contact -> contact
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#827dcf0/initial] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] applying pattern '^pakketten$' to uri 'contact'
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#827dcf0/initial] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] strip per-dir prefix: /var/www/vhosts/test.nl/test.nl/contact -> contact
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#827dcf0/initial] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] applying pattern '^contact$' to uri 'contact'
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#827dcf0/initial] (2) [per-dir /var/www/vhosts/test.nl/test.nl/] rewrite contact -> contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#827dcf0/initial] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] add per-dir prefix: contact.php -> /var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#827dcf0/initial] (1) [per-dir /var/www/vhosts/test.nl/test.nl/] internal redirect with /var/www/vhosts/test.nl/test.nl/contact.php [INTERNAL REDIRECT]
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] add path info postfix: /var/www/vhosts/test.nl/test.nl/var -> /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] strip per-dir prefix: /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php -> var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] applying pattern '^inloggen$' to uri 'var/www/vhosts/test.nl/test.nl/contact.php'
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] add path info postfix: /var/www/vhosts/test.nl/test.nl/var -> /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] strip per-dir prefix: /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php -> var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] applying pattern '^home$' to uri 'var/www/vhosts/test.nl/test.nl/contact.php'
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] add path info postfix: /var/www/vhosts/test.nl/test.nl/var -> /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] strip per-dir prefix: /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php -> var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] applying pattern '^pakketten$' to uri 'var/www/vhosts/test.nl/test.nl/contact.php'
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] add path info postfix: /var/www/vhosts/test.nl/test.nl/var -> /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] strip per-dir prefix: /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php -> var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] applying pattern '^contact$' to uri 'var/www/vhosts/test.nl/test.nl/contact.php'
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] add path info postfix: /var/www/vhosts/test.nl/test.nl/var -> /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] strip per-dir prefix: /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php -> var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] applying pattern '^images/(.*)/random' to uri 'var/www/vhosts/test.nl/test.nl/contact.php'
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] add path info postfix: /var/www/vhosts/test.nl/test.nl/var -> /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] strip per-dir prefix: /var/www/vhosts/test.nl/test.nl/var/www/vhosts/test.nl/test.nl/contact.php -> var/www/vhosts/test.nl/test.nl/contact.php
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (3) [per-dir /var/www/vhosts/test.nl/test.nl/] applying pattern '^images/(.*)/([0-9]*)/(.*)\.gif' to uri 'var/www/vhosts/test.nl/test.nl/contact.php'
82.95.199.47 - - [16/Jun/2007:16:37:07 +0200] [test.nl/sid#8159558][rid#828be80/initial/redir#1] (1) [per-dir /var/www/vhosts/test.nl/test.nl/] pass through /var/www/vhosts/test.nl/test.nl/var

Ik ontken het bestaan van IE.