Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

.htaccess: Wildcarts aus mehreren RewriteCond übernehmen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Harki
PostRank 1
PostRank 1
Beiträge: 9
Registriert: 11.01.2006, 11:41
Wohnort: Hannover

Beitrag von Harki » 26.02.2006, 20:41

Könnte mir vielleicht jemand einen Hinweis geben, wie ich Wildcarts aus verschiedenen aufeinander folgenden (also implizit mit einem "and" verbundenen) RewriteCond-Zeilen in eine einzige RewriteRule übernehmen kann?

Es geht um folgendes:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} !r=1
RewriteCond %{REQUEST_URI} ^/beitrag([0-9]*)\.html
RewriteCond %{HTTP_REFERER} ^http://[^/]*google.*[\?&]q=([^&]+).*
RewriteRule (.*) /viewtopic.php?p=%1&highlight=%2&r=1 [L]
Es soll aus der zweiten und der dritten RewriteCond ein Parameter an die RewriteRule übergeben werden - aber es klappt nicht. Es wird immer nur einer aus der letzten Zeile vor der Rule übergeben...

Zur Einordnung: Ich möchte auf einem mit larsneos short-URL-MOD gemoddeten phpBB ein weiteres MOD installieren.

Vielen Dank im voraus, ich hoffe, ich bin hier im richtigen Sub-Forum.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Caterham
PostRank 5
PostRank 5
Beiträge: 329
Registriert: 20.09.2004, 19:12

Beitrag von Caterham » 26.02.2006, 22:14

Könnte mir vielleicht jemand einen Hinweis geben, wie ich Wildcarts aus verschiedenen aufeinander folgenden (also implizit mit einem "and" verbundenen) RewriteCond-Zeilen in eine einzige RewriteRule übernehmen kann?
Das geht nicht.

Daneben verstehe ich nicht, warum du RewriteCond %{REQUEST_URI} ^/beitrag([0-9]*)\.html nutzt? Das kann und sollte immer im Pattern der RewriteRule geprüft werden. Der Pattern der RewriteRule wird vor den Conditions geprüft. Jeder Request (Grafiken etc.) ist bei .* also wahr und rennt dir in die Conditions rein. Gerade das soll die Prüfungsabfolge 'Pattern RewriteRule' ---wenn wahr --> 'Conditions' vermeiden. Daher ist das Ruleset ein wenig ineffizient.

Auf Backreferences mehrerer Conditions kannst du in der RewriteRule nicht zugreifen, da kann man nur mit Tricks arbeiten und die Werte an die nächst tiefer liegende Condition übergeben.

Hier jedoch kann man den Pattern der RewriteRule nutzen - so, wie es eigentlich gedacht ist. Was ist der Sinn von dem QueryString r=1? Soll das eine Endlosschleife verhindern, da du das in der Substitution auch anhängst? Hier kann gar keine entstehen. Die QueryString-Condition bewirkt, dass auf eine URL i.d. Form /beitrag13.html?r=1 dann die Substitution der RewriteRule nicht angewand wird - was also regelmäßig dann zu einem 404 not found führen wird.

Code: Alles auswählen

RewriteCond %{HTTP_REFERER} ^http://[^/]*google.*[\?&]q=([^&]+)
RewriteRule ^beitrag([0-9]+)\.html$ /viewtopic.php?p=$1&highlight=%1 [L]
Grüße
Robert

Harki
PostRank 1
PostRank 1
Beiträge: 9
Registriert: 11.01.2006, 11:41
Wohnort: Hannover

Beitrag von Harki » 26.02.2006, 22:32

Catherham, ganz herzlichen Dank für die Lösung meines Problems und für Deine ausführlichen Erklärungen.

Bild

Der von Dir vorgeschlagene Code funktioniert perfekt, und Deine Erklärungen haben mich belehrt.
Daneben verstehe ich nicht, warum du RewriteCond %{REQUEST_URI} ^/beitrag([0-9]*)\.html nutzt? Das kann und sollte immer im Pattern der RewriteRule geprüft werden. Der Pattern der RewriteRule wird vor den Conditions geprüft. Jeder Request (Grafiken etc.) ist bei .* also wahr und rennt dir in die Conditions rein.
Das wußte ich nicht...
Was ist der Sinn von dem QueryString r=1? Soll das eine Endlosschleife verhindern, da du das in der Substitution auch anhängst? Hier kann gar keine entstehen.
Nein, nein, der gehört zu dem MOD, um das es geht (s.o.):

Das MOD erreicht durch:

Code: Alles auswählen

'S_REMOVE_KEYWORDS' => ( isset( $HTTP_GET_VARS['r']) ) ? '' : 'display: none',
in viewtopic.php ,

daß der Surfer der über Google auf die eigene Seite gekommen ist, die Hervorhebung seiner Suchbegriffe abschalten kann.

Nochmals: Danke!

Caterham
PostRank 5
PostRank 5
Beiträge: 329
Registriert: 20.09.2004, 19:12

Beitrag von Caterham » 26.02.2006, 22:44

Dann reicht es ja, wenn du
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://[^/]*google.*[\?&]q=([^&]+)
RewriteRule ^beitrag([0-9]+)\.html$ /viewtopic.php?p=$1&highlight=%1&r=1 [L]
notierst, da eben kein Aufruf von /beitrag132.html?r=1 erfolgt, was die Condition übrflüssig macht.

Grüße
Robert

Harki
PostRank 1
PostRank 1
Beiträge: 9
Registriert: 11.01.2006, 11:41
Wohnort: Hannover

Beitrag von Harki » 28.02.2006, 13:37

Auch das scheint mir richtig zu sein. Ich habe es jetzt so:

Code: Alles auswählen

RewriteCond %{HTTP_REFERER} ^http://[^/]*google.*[\?&]q=([^&]+)
RewriteRule ^beitrag([0-9]+)\.html$ /viewtopic.php?p=$1&highlight=%1&r=1 [L]

RewriteCond %{HTTP_REFERER} ^http://[^/]*google.*[\?&]q=([^&]+)
RewriteRule ^thema([0-9]+)-([0-9]+)\.html$ /viewtopic.php?t=$1&start=$2&highlight=%1&r=1 [L]

RewriteCond %{HTTP_REFERER} ^http://[^/]*google.*[\?&]q=([^&]+)
RewriteRule ^thema([0-9]+)\.html$ /viewtopic.php?t=$1&highlight=%1&r=1 [L]
gemacht, und alles läuft zu meiner Zurfriedenheit. Das Short-URL-MOD harmoniert nun mit dem "Highlight Google Keywords"-MOD.

Nochmals danke. :)

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag