Seite 1 von 1
.htaccess: Wildcarts aus mehreren RewriteCond übernehmen
Verfasst: 26.02.2006, 20:41
von Harki
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.
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
.htaccess: Wildcarts aus mehreren RewriteCond übernehmen
Verfasst: 26.02.2006, 22:14
von Caterham
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
Re: .htaccess: Wildcarts aus mehreren RewriteCond übernehmen
Verfasst: 26.02.2006, 22:32
von Harki
Catherham, ganz herzlichen Dank für die Lösung meines Problems und für Deine ausführlichen Erklärungen.
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!
.htaccess: Wildcarts aus mehreren RewriteCond übernehmen
Verfasst: 26.02.2006, 22:44
von Caterham
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
.htaccess: Wildcarts aus mehreren RewriteCond übernehmen
Verfasst: 28.02.2006, 13:37
von Harki
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.
