You are not logged in.

  • Login

1

Monday, December 25th 2006, 9:16pm

Bitte Hilfe

Hallo allerseits, ich habe schion ganzen Net durchgesucht und nichts zu meinem Problem gefunden:
Es geht um folgenden. Ich habe einen Link wie folgt:

http://www.beispiel-test.com/portfolio/portfolio.html

und möchte mit rewrite in

http://www.beispiel-test.com/portfolio/

umwandeln

Es kommt auch vor:
http://www.beispiel-test.com/test1/test2/test.html
muss in:
http://www.beispiel-test.com/test1/test2/


bitte hilft mir!!!

3

Tuesday, December 26th 2006, 11:17am

Problem? dies zu realisieren! (mit mod rewrite in htaccess)

4

Tuesday, December 26th 2006, 11:36am

Das hab ich mir schon gedacht, nur verkaufen wir hier keine Fertiglösungen. Ich dachte du hättest bereits Versuche gemacht und ich könnte dir daran zeigen, wo der Fehler ist.

Also so wie du dein Problem formulierst, willst du test1/test2/ im Browser eintippen und die Inhalte von test1/test2/test.html erhalten.
Da du auf diese Art von wenig Information (Ordner,Ordner) auf auf viel Information (Ordner,Ordner,Dateiname) test1/test2/test.html weiterleiten willst, bleibt dir nichts anderes als die Regeln für jeden Ordner manuell zu erstellen.

Wenn wir das ganze umdrehen würden, du also von Ordner,Ordner,Dateiname auf Ordner,Ordner leiten möchtest, dann musst du einfach nur....

(Alle Zeichen)/(Alle außer Slash).html an \1 weiterleiten

De Facto wird der Dateiname also ignoriert

5

Tuesday, December 26th 2006, 11:59am

Also, versucht habe ich schon, klar, aber es kommt mir trotzdem alles spanisch vor.
Ich kapiere den Sytax einfach nicht.

Für mein Problem, habe ich folgenden Skript versucht:

Source 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
DirectoryIndex index.php index.shtml index.html index.htm
Options +Includes -MultiViews
AddType text/x-server-parsed-html .html .shtm .shtml .abc

RewriteEngine On
#Macht nichts anderes als www weg!!
RewriteCond %{HTTP_HOST} ^www.muster-seite.com$ [NC]
RewriteRule ^(.*) http://muster-seite.com/$1 [L,R=301] 



#startseite index.php auf -> /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,4}\ /[^.]*index\.php\ HTTP [NC]
RewriteRule ^([^.]*)index\.php$ http://muster-seitecom/$1 [NC,R=301,L]

# /verz/beispiel.php --> /vrz/beispiel/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,4}\ /[^.]+/[^./]+\.php\ HTTP [NC]
RewriteRule ^([^.]+)/([^./]+)\.php$ /$1/$2/ [R=301,L]

# /verz/beispiel/ --> /vrz/beispiel.php
RewriteRule ^([^.]+)/([^/.]+)/$ /$1/$2.php[L]

RewriteCond %{REQUEST_URI} !/$
RewriteRule !\.[a-z]{2,4}$ - [C]
RewriteRule ^(.+) /$1/ [R=301,L]



Dies funktionier bei:

www.test.de/test/test.html -> www.test.de/test/test

aber, funktioniert nicht bei:
www.test.de/test/test2/test2.html -> www.test.de/test/test2/test2
usw.


Aber, meine Kernidee!!

ich habe z.B.: folgende Struktur:
---------------
1.bilder
2.info/kontakt.html
3.css

index.php
--------------

In meiner kontakt.html befinden sich Bilder und die Links sehen wir folgt:

../bilder/hilfe.jpg

und jetzt!! Ich möchte, ich weiss nicht, ob dies überhaupt möglich ist, dass alle Links vom root aus kommen :) also, das heißt:

wenn ich in der kontakt.html wie folgt angebe:

/bilder/hilfe.jpg

soll dies auch funktioniert.
Ich weiss, ist nicht leicht zu verstehen, aber wäre so dankbar für die Hilfe!!

Zu dem Problem, kommt dann auch das Problem von oben, Sinn ist, dass meine Links auch wie folgt funktionieren:

z.B.: index.html
<a href ="info/kontakt.html/">Kontakt</a> soll zu -> <a href ="info/kontakt/">Kontakt</a>

6

Tuesday, December 26th 2006, 2:08pm

Source code

1
RewriteRule ^(.*)/([^/]*).html$ $1 [L]

Das ist der Code für folgendes:
* /test1/test2/test.html -> /test1/test2/
* /test1/test2/test3/test.html -> /test1/test2/test3/

In deinem aktuell Posting siehts aber eher so aus als willst du:

Source code

1
RewriteRule ^(.*)/([^/]*).html$ $1/$2 [L]

* /test1/test2/test.html -> /test1/test2/test
* /test1/test2/test3/test.html -> /test1/test2/test3/test

Da deine Bilder doch sowieso im Hauptverzeichnis liegen kommst du mit folgender Pfadangabe auf jeden Fall ans Ziel: /bilder/hilfe.jpg

7

Tuesday, December 26th 2006, 6:39pm

ok, besten Dank, ich werde es mal probieren.
Aber, zum Verständnis:

Source code

1
RewriteRule ^(.*)/([^/]*).html$ $1 [L]
:

^ <- Anfang
(.*) <- beliebig
/ <- unterordner
([^/]*) <- ??????
.html <- erweiterung
$ <- Ende
$1 <- mmm?

8

Tuesday, December 26th 2006, 6:58pm

alles was rund geklammert wird ist ein regulärer ausdruck der zu einer variablen wird
alles was eckig geklammert wird ist ein regulärer ausdruck

$1, $2, $3, ... sind die Variablen

[^/] <- beliebiges zeichen außer slash
[^/]* <- ... unendlich oft wiederholt

Wer in der Schule mit Automatentheorie konfroniert wurde, weiß wie man reguläre Ausdrücke baut.

9

Tuesday, December 26th 2006, 8:13pm

also, von Prinzip, es funktioniert, aber ich bekomme die Fehlermeldung bei
* /test1/test2/test.html -> /test1/test2/

You don't have permission to access /test2/ on this server.

Zugriff auf Ordner ist gesperrt, klar, aber, ist doch von Prinzip:

wird /test.html einfach ausgeblenden und in wirklichkeit, die /test.html ist doch da!!! oder?)

10

Wednesday, December 27th 2006, 11:18am

So versucht er natürlich die index Dateien zu laden (index.html, index.php, ...)
Aber die test.html ist nicht wirklich da, oder?

11

Wednesday, December 27th 2006, 11:48am

nein

aufgebaut ist wie folgt:

www.muster.de/portfolio/portfolio.html

www.muster.de/gallery/gallery.html
usw.

wollte wie gesaagt, dass mit Ausblenden von:/portfolio.html und /gallery.html usw.

und dann meine Links in der Navigation wie folgt darzustellen:

<a href="gallery.html"> -><a href="gallery/">
<a href="portfolio.html"> -><a href="portfolio/">

dies versuche ich seit ...
Suche Lösung und Hilfe...und so viel ich weiss, geht dies über htaccess:

als beispiel, schau den Quellcode (Links) von:
http://www.artlebedev.com/

ich glaube inzwischen, du bist der einzige der mir helfen kann :)

12

Wednesday, December 27th 2006, 1:12pm

Mach doch folgendes:

.htaccess

Source code

1
2
3
4
5
6
7
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

So kannst du deine Links machen, wie du möchtest, alles, was es nicht wirklich gibt wird auf die index.php gezeigt. Ab da an kannst du das ganze übers Script steuern.

MfG
eLKane
Latest blogs Latest blogs: PuTTY 0.60 erschienen

Social bookmarks