Apache mod_rewrite https nur für einen Ordner

Apache, Lighttpd, nginx, Cherokee
spookybar
Posts: 9
Joined: 2010-11-26 19:56

Apache mod_rewrite https nur für einen Ordner

Post by spookybar » 2012-03-25 18:29

Hi Leute,

ich bin auf der Suche nach den richtigen Konfiguration für mod_rewrite (htaccess-Datei im root-Verzeichnis), die eigentlich Folgendes machen soll:

- alles andere als Domain domain.tld (subdomain.dommain.tld, domain.de) -> domain.tld
- alle Abfragen für /ordner/ (einschließlich Unterordner, z.B. /ordner/a/, ordner/a/a/) -> https
- alle anderen Abfragen -> http

- / (trailing slash) am Ende, was sehr gut klappt mit:

Code: Select all

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [L,R=301]


- Weiterleitung auf index.php, was eigentlich sehr gut klappt mit:

Code: Select all

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


Bin schon ziemlich lange auf der Suche (für diese Paar Weiterleitungen), die bisherigen Versuche aus anderen Foren/HowTos haben aber leider nicht ganz geklappt. Muss doch irgendwie möglich sein, oder?

Viele Grüße

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Apache mod_rewrite https nur für einen Ordner

Post by Joe User » 2012-03-25 18:48

Sollte in etwa so funktionieren:

Code: Select all

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName example.org
    CustomLog "/srv/www/vhosts/example.org/logs/access_log" combined
    ErrorLog "/srv/www/vhosts/example.org/logs/error_log"
    DocumentRoot "/srv/www/vhosts/example.org/data"
    <Directory "/srv/www/vhosts/example.org/data">
        Options -All +FollowSymLinks +ExecCGI
        AllowOverride Options FileInfo AuthConfig Limit
        Order Allow,Deny
        Allow from all
        <IfModule rewrite_module>
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_URI} !(.+)/$
            RewriteRule ^(.+)$ /$1/ [L,R=301]
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . /index.php [L]
        </IfModule>
    </Directory>
    RedirectMatch 301 ^/(securefolder) https://example.org/$1
</VirtualHost>
<VirtualHost *:80>
    ServerName www.example.org
    ServerAlias *.example.org *.example.net example.net
    Redirect 301 / http://www.example.org/
</VirtualHost>
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

spookybar
Posts: 9
Joined: 2010-11-26 19:56

Re: Apache mod_rewrite https nur für einen Ordner

Post by spookybar » 2012-03-26 22:53

Hallo joe,

vielen Dank für deine schnelle Hilfe. Ich möchte diese Weiterleitungen auf einem Server mit Plesk 10.? umsetzen. Dabei muss man eine Datei vhost.conf erstellen (siehe ftp://download1.sw-soft.com/Plesk/Plesk ... pas02.html).

Beim Versuch die Konfiguration zu integrieren (/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=x), bekomme ich die Fehlermeldung "<VirtualHost> cannot occur within <VirtualHost> section".

Ich habe eigentlich eine bestehende httpd.include-Datei genommen und die Anpassungen gemacht. Kommt die Fehlermeldung, weil zwei <VirtualHost x.x.x.x:80>-Blöcke vorhanden sind oder weil in der "Eltern-httpd.conf" in der diese vhost.conf einbezogen wird bereits <VirtualHost> vorhanden ist?

Vielleicht kann mir jemand einen Tipp geben bzw. bei dieser Weiterleitung helfen.

Vielen Dank i.V.

PS: wenn ich den ersten und den letzten <VirtualHost>-Tag lösche, erhalte ich den Fehler: Syntax error on line 63 of /var/www/vhosts/domain.de/conf/vhost.conf: </VirtualHost> without matching <VirtualHost> section

PS: Ich wollte nur kurz anmerken, dass bei dem Ordner /ordner/ (einschließlich Unterordner, z.B. /ordner/a/, ordner/a/a/) es sich um keine richtigen Ordner handelt, sondern um eine URL-Design Sache. Ich hoffe, dass es hiermit geht
RedirectMatch /xxx(.*)$ https://domain.de/xxx$1
Last edited by spookybar on 2012-03-26 23:26, edited 2 times in total.

ddm3ve
Moderator
Moderator
Posts: 1143
Joined: 2011-07-04 10:56

Re: Apache mod_rewrite https nur für einen Ordner

Post by ddm3ve » 2012-03-27 10:25

spookybar wrote:Ich habe eigentlich eine bestehende httpd.include-Datei genommen und die Anpassungen gemacht. Kommt die Fehlermeldung, weil zwei <VirtualHost x.x.x.x:80>-Blöcke vorhanden sind oder weil in der "Eltern-httpd.conf" in der diese vhost.conf einbezogen wird bereits <VirtualHost> vorhanden ist?


Genau daran liegt es.
Der Include geschieht innerhalb der vhost Direktive.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Apache mod_rewrite https nur für einen Ordner

Post by Joe User » 2012-03-27 11:38

Bei Plesk sollte das bei example.org reichen:

Code: Select all

<Directory "/srv/www/vhosts/example.org/data">
    <IfModule rewrite_module>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_URI} !(.+)/$
        RewriteRule ^(.+)$ /$1/ [L,R=301]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
    </IfModule>
</Directory>
RedirectMatch 301 ^/(securefolder) https://example.org/$1

Und das bei www example.org:

Code: Select all

ServerAlias *.example.org *.example.net example.net
Redirect 301 / http://example.org/
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

spookybar
Posts: 9
Joined: 2010-11-26 19:56

Re: Apache mod_rewrite https nur für einen Ordner

Post by spookybar » 2012-03-29 22:37

Hallo Joe,

vielen Dank dafür ertsmal. Klappt schonmal wie bisher. Gibt es eine Möglichkeit, von hhtps-> http, wenn nicht /ordner?

Viele Grüße

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Apache mod_rewrite https nur für einen Ordner

Post by Joe User » 2012-03-30 00:57

Ungetestet, muss in den HTTPS-VHost:

Code: Select all

RedirectMatch 301 ^/(^securefolder) http://example.org/$1
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.