Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Apache - Redirect mit Ausnahmen?

498 views
Skip to first unread message

Magnus Warker

unread,
Mar 2, 2012, 4:35:34 AM3/2/12
to
Hallo,

ich habe hinter meinem Domain-Namen "mydomain" (fiktiv) eine
Tomcat-Anwendung mit dem Namen "app".

Davor befindet sich ein Apache-Server, der die Verbindung zur Anwendung
über einen Proxy weiterleitet:

ProxyPass /app ajp://localhost:8009/app
ProxyPassReverse /app ajp://localhost:8009/app

Die Anwendung ist somit erreichbar unter "http://mydomain/app".

Damit man das Unterverzeichnis "app" nicht angeben muss, habe ich eine
Weiterleitung eingerichtet:

Redirect permanent / /app/

Die Anwendung ist somit erreichbar unter "http://mydomain".
Soweit so gut.

Nun möchte ich eine Ausnahme dazu haben, so dass etwa das Verzeichnis
"/foo" nicht umgeleitet wird und "normal" im Dateisystem liegt:

<Location /foo>
AuthType None
</Location>

Dieses Verzeichnis sollte also unter "http://mydomain/foo" erreichbar
sein und auf das gleichnamige Verzeichnis unter DocumentRoot verweisen.

Der Zugriff auf "http://mydomain/foo" wird jedoch umgeleitet auf
"http://mydomain/app/foo", was zu einer Tomcat-Fehlermeldung führt.

Wie kann ich das lösen?
Wie kann ich erreichen, dass "/foo" so erreichbar ist, als gäbe es keine
Weiterleitung?

Danke!
Magnus

Wilhelm Greiner

unread,
Mar 2, 2012, 5:06:02 AM3/2/12
to
Hi,
* Magnus Warker <war...@mailinator.com> schrieb:
> ProxyPass /app ajp://localhost:8009/app
> ProxyPassReverse /app ajp://localhost:8009/app

Einfach ein "!" hintendran machen

ProxyPass /foo !

Glaub es wird first match abgearbeitet, also vor dem anderen Eintrag.

Wilhelm

Magnus Warker

unread,
Mar 2, 2012, 5:12:03 AM3/2/12
to
Danke, schon probiert, aber ohne Erfolg.

Die ProxyPass-Direktive kann ich damit aushebeln, aber wohl nicht die
Redirect-Direktive...

Habe auch schon das "ProxyPass /foo !" vor die Redirect-Anweisung
verschoben, aber es wird immer das "app" eingefügt...

Magnus

Sven Hartge

unread,
Mar 2, 2012, 8:52:26 AM3/2/12
to
Warum machst du nicht

ProxyPass /foo !
ProxyPass / ajp://localhost:8009/app
ProxyPassReverse / ajp://localhost:8009/app

Dann brauchst du den Redirect auch nicht.



--
Sigmentation fault. Core dumped.

Magnus Warker

unread,
Mar 5, 2012, 12:46:38 AM3/5/12
to
On 03/02/2012 02:52 PM, Sven Hartge wrote:

> Warum machst du nicht
>
> ProxyPass /foo !
> ProxyPass / ajp://localhost:8009/app
> ProxyPassReverse / ajp://localhost:8009/app

Ich habe es ausprobiert und erhalte im Browser die Fehlermeldung:

HTTP Status 404 - /appapp/
The requested resource (/appapp/) is not available.

Das Kürzel "app" wird aus irgendwelchen Gründen zweimal angefügt.
(Der Redicect ist auskommentiert.)

Die URL im Browser wird nach wie vor in ".../app" geändert.

Magnus

Magnus Warker

unread,
Mar 5, 2012, 4:15:55 AM3/5/12
to
Hier meine Konfiguration (mydomain ist fiktiv):
(Könnte das Problem mit dem "Location /app" zu tun haben?)

# NameVirtualHost *

<VirtualHost *:80>
ServerName www.mydomain.de
ServerAlias mydomain.de
ServerAdmin webmaster@localhost

DocumentRoot /home/www/web/mydomain/pub/

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory /home/www/web/mydomain/pub/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ "/usr/share/doc/"

<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

<Location /app>
AuthType Basic
AuthName "Restricted"
AuthBasicProvider file
AuthUserFile /home/www/web/mydomain/pwd/www.pwd
Require valid-user
</Location>

#RedirectX permanent / /app/

# proxy

<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>

ProxyPass /foo !

ProxyPass / ajp://localhost:8009/app
ProxyPassReverse / ajp://localhost:8009/app

</VirtualHost>



Helmut Schneider

unread,
Mar 5, 2012, 4:52:20 PM3/5/12
to
Magnus Warker wrote:

> On 03/02/2012 02:52 PM, Sven Hartge wrote:
>
> > Warum machst du nicht
> >
> > ProxyPass /foo !
> > ProxyPass / ajp://localhost:8009/app
> > ProxyPassReverse / ajp://localhost:8009/app
>
> Ich habe es ausprobiert und erhalte im Browser die Fehlermeldung:
>
> HTTP Status 404 - appapp
> The requested resource (/appapp/) is not available.
>
> Das Kürzel "app" wird aus irgendwelchen Gründen zweimal angefügt.
> (Der Redicect ist auskommentiert.)
>
> Die URL im Browser wird nach wie vor in ".../app" geändert.

Du hast in der context.xml /app als docBase angegeben (IIRC, Tomcat und
ich sind auf dem Kriegspfad), daher hängt Tomcat /app an. Ändere das,
oder benutze mod_rewrite.

Magnus Warker

unread,
Mar 6, 2012, 7:35:39 AM3/6/12
to
On 03/05/2012 10:52 PM, Helmut Schneider wrote:

> Du hast in der context.xml /app als docBase angegeben (IIRC, Tomcat und
> ich sind auf dem Kriegspfad), daher hängt Tomcat /app an. Ändere das,
> oder benutze mod_rewrite.

Danke, das erklärt einiges!

Hättest Du noch einen Tipp. wie ich das mit Apache-Mitteln (mod_rewrite)
schnell ändern kann?

(Die Tomcat-Konfiguration zu ändern ist für mich schwieriger, zumal
docBase ja vermutlich auch nicht ganz leer sein darf).

Danke,
Magnus

Helmut Schneider

unread,
Mar 7, 2012, 2:45:42 PM3/7/12
to
Magnus Warker wrote:

> On 03/05/2012 10:52 PM, Helmut Schneider wrote:
>
> > Du hast in der context.xml /app als docBase angegeben (IIRC, Tomcat
> > und ich sind auf dem Kriegspfad), daher hängt Tomcat /app an.
> > Ändere das, oder benutze mod_rewrite.
>
> Danke, das erklärt einiges!
>
> Hättest Du noch einen Tipp. wie ich das mit Apache-Mitteln
> (mod_rewrite) schnell ändern kann?

Komm, Du willst 1x '/app' aus der URL löschen, das bekommst Du hin. Tip:

RewriteEngine on
RewriteRule ^old\.html$ new.html

> (Die Tomcat-Konfiguration zu ändern ist für mich schwieriger, zumal
> docBase ja vermutlich auch nicht ganz leer sein darf).

Lies das Handbuch. docBase kann auch leer sein.
0 new messages