Zur Navigation

Mal wieder Weiterleitung via 301 und Htaccess

1 philllip

Hallo Jörg ich habe schon ettliche Beispiele ausprobiert die ich in diesem Forum gefunden habe, doch leider hat nichts geholfen.

Ich möchte via Htaccess (301) von einer dynamischen .php auf .html weiterleiten.

seite.php?page=1 -> seite.html

so sieht meine htaccess momentan aus:

RewriteEngine On
RewriteRule ^(.*)/(styleid=(.*))$ showthread.php?&%{QUERY_STRING} [L]
RewriteRule ^(.*)/(showthread\.php)$ showthread.php?&%{QUERY_STRING} [L]
RewriteRule ^(.*)/t-(.*)-(.*)-new.html showthread.php?t=$3&goto=newpost&%{QUERY_STRING} [L]
RewriteRule ^(.*)/t-(.*)-(.*)-last.html showthread.php?t=$3&goto=lastpost&%{QUERY_STRING} [L]
RewriteRule ^(.*)/t-(.*)-(.*)-print.html/(.*)$ printthread.php?t=$3&%{QUERY_STRING}&is_vrewrite=yes [L]
RewriteRule ^(.*)/t-(.*)-(.*)-print.html printthread.php?t=$3&is_vrewrite=yes&%{QUERY_STRING} [L]
RewriteRule ^(.*)/t-(.*)-(.*)-nextnewest.html showthread.php?t=$3&goto=nextnewest&is_vrewrite=yes&%{QUERY_STRING} [L]
RewriteRule ^(.*)/t-(.*)-(.*)-nextoldest.html showthread.php?t=$3&goto=nextoldest&is_vrewrite=yes&%{QUERY_STRING} [L]
RewriteRule ^p-(.*)-post(.*)/postcount(.*).html showpost.php?p=$2&postcount=$3&is_vrewrite=yes&%{QUERY_STRING} [L]
RewriteRule ^(.*)/t-(.*)-(.*)-page(.*).html showthread.php?t=$3&page=$4&is_vrewrite=yes&%{QUERY_STRING} [L]
RewriteRule ^(.*)/t-(.*)-(.*)/page(.*).html showthread.php?t=$3&page=$4&is_vrewrite=yes&%{QUERY_STRING} [L]
RewriteRule ^(.*)/t-(.*)-(.*).html/(.*)$ showthread.php?t=$3&%{QUERY_STRING}&is_vrewrite=yes [L]
RewriteRule ^(.*)/t-(.*)-(.*).html showthread.php?t=$3&is_vrewrite=yes&%{QUERY_STRING} [L]
RewriteRule ^f-(.*)-(.*)/misc\.php$ misc.php?&%{QUERY_STRING}&is_vrewrite=yes&%{QUERY_STRING} [L]
RewriteRule ^members/(.*)-(.*).html member.php?u=$2&is_vrewrite=yes&%{QUERY_STRING} [L]
RewriteRule ^u-(.*)-(.*).html(.*) member.php?u=$2&is_vrewrite=yes&%{QUERY_STRING}$3 [L]
RewriteRule ^u-(.*)-(.*).html member.php?u=$2&is_vrewrite=yes&%{QUERY_STRING} [L]
RewriteRule ^f-(.*)-(.*)/page(.*).html/(.*)$ forumdisplay.php?f=$2&&page=$3%{QUERY_STRING}&is_vrewrite=yes [L]
RewriteRule ^f-(.*)-(.*)/(.*)$ forumdisplay.php?f=$2&&%{QUERY_STRING}&is_vrewrite=yes [L]
RewriteRule ^f-(.*)-(.*)/$ forumdisplay.php?f=$2&%{QUERY_STRING}&is_vrewrite=yes [L]
RewriteRule ^search-(.*).html$ search.php?do=$1 [L]

RewriteCond %{HTTP_HOST} !^www\.domain\.tld$
RewriteRule ^(.*)$ http://www.domain.tld/$1 [L,R=301]

Kannst Du mir da weiterhelfen?

Danke :-)

02.06.2006 08:19

2 Jörg

Hallo phillip,

zwei Frage stellen sich mir noch:

- was machst du aus der 1 in deinem Beispiel? sollen alle Seiten, die dem Muster seite.php?page=x entsprechen, pauschal umgeleitet werden nach seite.html oder individuell nach seite-x.html?

- möchtest du wirklich eine dauerhafte Weiterleitung auf bereits bestehende statische Seiten oder nur eine Änderung der URL in eine statische Form über mod_rewrite? Ersteres würde wohl vorausetzen, dass du statische URLs bereits durch mod_rewrite erzeugt hast, eine entsprechende Regel kann ich in der .htaccess allerdings nicht entdecken

02.06.2006 10:30 | geändert: 02.06.2006 10:31

3 philllip

hallo jörg, das seite.php?page=1 sollte eigentlich ---> seite.php?page=X heissen, das war mein fehler!

spricht die X ist eine id die bei jeder neuen seite die erstellt wird automatisch vergeben wird. id=1, id=2 id=3 usw.

da ich aber mit díesem "hack" nur 3 seiten benötige möchte ich nicht das die urls automatisch umgewandelt werden, sondern möchte jeder id dann einen eigenen namen geben.

beispiel aus seite.php?id=1 soll z.B datenschutz.html werden und aus seite.php?id=2 soll impressum.html werden usw.

und ja ich habe mit einem hack bereits aus dynamischen urls statische .html seiten erzeugt. daher kommt auch die vorhandene .htaccess

ich hoffe du kannst mit meinen infos was anfangen :-)



02.06.2006 16:59

4 Jörg

Also geht es nicht um eine Weiterleitung, sondern um eine Umbenennung, so wie auch die anderen Rules in der .htaccess zum Großteil der Umbenennung dienen?

Diese könntest du mit folgenden Rules probieren:

RewriteRule ^datenschutz\.html$ seite.php?id=1
RewriteRule ^impressum\.html$ seite.php?id=2

Beim Aufruf von datenschutz.html wird dann der Inhalt von seite.php?id=1 angezeigt etc.

02.06.2006 20:25

5 philllip

jörg du bist ein schatz :-) Es funktioniert tadellos!

wenn es erlaubt ist werde ich dich morgen nochmal um hilfe bitten bei einer mod rewrite regel die ich benötige.

danke vielmals

02.06.2006 23:43

6 philllip

hallo, ich nochmal. leider kommt es aufgrund einer (wie ich glaube) fehlenden regel in der htaccess zu einem fehler beim aufrufen folgender datei. (er verrichtet seinen dienst nicht wenn der seo hack aktiviert ist)

folgende datei wird aufgerufen, dass der hack seine arbeit verrichtet.

http://www.domain.tld/showthread.php?t=ID&thanks=1

kannst Du mir da auch weiterhelfen?

Danke im vorraus

MfG

03.06.2006 09:21

7 Jörg

So ganz habe ich das Problem noch nicht verstanden: Was heißt: "Verrichtet seinen Dienst nicht" genau: Wird beim Aufruf von http://www.domain.tld/showthread.php?t=ID&thanks=1 eine leere Seite angezeigt, wird eine andere Seite angezeigt (wenn ja welche) oder wird eine Fehlermeldung angezeigt (wenn ja welche)? Und worin besteht der "Seo Hack" - die Rules, die in der .htaccess aufgeführt sind? Dort sehe ich zumindet keine Rule, die diese Seite ungewollt abfangen würde

03.06.2006 14:25

8 philllip

Hallo, eins vorab, da der Coder von dem Hack (den ich schon kontaktiert habe, mir nicht helfen will oder kann, weiss ich deine Hilfe wirklich sehr zu schätzen) :-)

"Was heißt: "Verrichtet seinen Dienst nicht" genau: Wird beim Aufruf von http://www.domain.tld/showthread.php?t=ID&thanks=1 eine leere Seite angezeigt"

also beim aufrufen dieser datei wird ein unsichtbarer text (hide hack) für den user der den danke button drückt sichtbar und gleichzeitig wird dem user 1 "Danke" dem Zähler gutgeschrieben.


wenn der seo hack aktiviert ist, geht diese funktion leider nicht mehr. wenn man den danke buttone drückt wird der text der sichtbar werden soll, nicht sichtbar und es wird auch kein dem "Dankezähler" dieses Danke nicht gutgeschrieben.

Eine Fehlermeldung oder falsche Weiterleitung gibt es allerdings nicht. Es wird einfach die oben beschriebene Funktion nicht ausgeführt.

da man den "Hidden text" in jedem beliebigen thema einbauen kann, wird sich das ."t=ID" immer ändern falls das relevant sein sollte, alles andere bleibt gleich -> showthread.php?t=ID&thanks=1


"Und worin besteht der "Seo Hack" - die Rules, die in der .htaccess aufgeführt sind?"

Der seo Hack besteht aus einem Produkt das in das vBulletin importiert wird, aus 3 Template änderungen und der htacces die weiter oben schon geschrieben steht.

Installation

Pre: Backup backup!
1) Import product-vrewrite.xml as a product using the plugin system.
2) Upload the .htaccess file to your vB's directory.
3) In forumdisplay, showthread, standard_error find:
$headinclude
Add before that:
<base href="$vboptions[bburl]/" />
4) Enjoy! 

Das Produkt lasse ich Dir gerne zukommen falls benötigt.

Ich hoffe, ich konnte deine Fragen verständlich beantworten.

MfG

03.06.2006 20:56 | geändert: 03.06.2006 21:03

9 Jörg

Das hört sich schon danach an, als ob der Query String nicht ankommt. Am ehesten könnte vielleicht die zweite Rule die Abfrage abfangen:

RewriteRule ^(.*)/(showthread\.php)$ showthread.php?&%{QUERY_STRING} [L]

... obwohl sie sich auf ein Unterverzeichnis bezieht - aber das '(.*)' kann ja auch nichts sein. Das '&' scheint mir auch überflüssig, ob dies vielleicht den Query String unbrauchbar macht? Vielleicht mal die obere Zeile ersetzen durch:

RewriteRule ^(.+)/(showthread\.php)$ showthread.php [QSA,L]

Funktioniert die Seite dann?

03.06.2006 22:19

10 philllip

ob dies vielleicht den Query String unbrauchbar macht?

ich wäre froh wenn ich mich mit den "zeug" auskennen würde, dann müsste ich dich nicht belästigen *g*
mich darfst du da nicht fragen :)


Funktioniert die Seite dann?

Nach dem ersetzen deiner regel funktioniert die seite und der seo hack noch, ja! allerdings geht der besagte danke hack leider immer noch nicht.

hast du eventuell eine alternative regel für mich zum probieren?

MfG

04.06.2006 03:07