Zur Navigation

Weiterleiten einer URL abhängig vom Query String [2]

..bei Anwesenheit von mehreren Query Strings

11 Constantin (Gast)

Hi Jörg,

sorry leider hab ich viel zu spät gemerkt, dass wenn ich einmal diese rule benutze

RewriteRule index\.php http://www.url.com/de/agb? [L,R=301]

alle URLs mit folgendem Aufbau

index.php?option=com_content&view=article&id=3&Itemid=31

weitergeleitet werden. Ich habe aber einen Mischbetrieb, d.h. ich möchte manche URLs umschreiben und andere wiederrum nicht.

Kann man da nicht irgendeinen anderen Ausdruck dran hängen, damit wirklich nur die eine URL weitergeleitet wird? Hab mit der rule oben die anderen dynamischen URLs leider alle auf die Hauptdomäne umgeleitet was ich eigentlich nicht wollte.

Gruß
Constantin

13.06.2010 20:00

12 Jörg Kruse

Diese RewriteCond hast du aber noch drin stehen (?):

RewriteCond %{QUERY_STRING} option=com_content&view=article&id=3&Itemid=31

13.06.2010 20:18

13 Constantin (Gast)

Hi Jörg,

momentan steht das Ganze so in der .htaccess:

#RewriteCond %{QUERY_STRING} option=com_content&view=article&id=3&Itemid=31&lang=de
#RewriteRule index\.php http://www.url.com/de/agb? [L,R=301]

Damit werden alle URLs mit diesem Aufbau weitergeleitet, ich möchte das aber nur auf einzelne beschränken für die ich die rewrite rules mache.

Geht das?

14.06.2010 19:04

14 Jörg Kruse

Was meinst du mit "alle URLs mit diesem Aufbau" - URLs, die noch weitere Parameter hinten dranhängen haben? das kannst du mti den Begrenzungszeichen verhindern:

RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=3&Itemid=31&lang=de$

14.06.2010 20:37

15 Constantin (Gast)

Hi Jörg,

genau danach habe ich gesucht. Werde dich auch in Zukunft klickkräftig unterstützen :)

15.06.2010 19:18

... 6 Monate später ...

16 pdm_2011

Hallo bin neu hier und hab da auch eine frage, schreibe hierrein, weil ich glaube das es das selbe thema ist:

ich habe folgende .htaccess datei:
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^type=erweitert&id=1&titel=Kontakt&neuid=2$
RewriteRule ^([-a-zA-Z0-9]+)-([-a-zA-Z0-9]+)-([-a-zA-Z0-9]+)\.html$ /test/index.php?type=erweitert&id=$1&titel=$2&neuid=$3 [L]
RewriteCond %{QUERY_STRING} ^type=normal&id=1&titel=Kontakt$
RewriteRule ^([-a-zA-Z0-9]+)-([-a-zA-Z0-9]+)\.html$ /test/index.php?type=normal&id=$1&titel=$2 [L]



ich möchte gern das alle links mit dem type=erweitert an die eine adresse geht
und alle mit dem typ normal an eine andere

meine überlegung war, das es links mit wenig variablen gibt und andere mit mehr und unabhängig davon, auch mit verschiedenen variablen

ich komm hier einfach nicht mehr weiter.
wenn ich die RewriteCond Zeilen weg lasse, funktioniert alles aber ich würd gerne die Rules nach den variablen zuordnen.

habe ich ein denkfehler oder was mache ich falsch?

LG

17.12.2010 05:19

17 Jörg Kruse

ich möchte gern das alle links mit dem type=erweitert an die eine adresse geht
und alle mit dem typ normal an eine andere

also unabhängig davon, welche Parameter danach folgen? Dann musst du die Muster hinten offen lassen

RewriteCond %{QUERY_STRING} ^type=erweitert

17.12.2010 09:45

18 pdm_2011

danke für deine schnelle antwort

das habe ich auch schon probiert also?

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^type=erweitert
RewriteRule ^([-a-zA-Z0-9]+)-([-a-zA-Z0-9]+)-([-a-zA-Z0-9]+)\.html$ /test/index.php?type=erweitert&id=$1&titel=$2&neuid=$3 [L]
RewriteCond %{QUERY_STRING} ^type=normal
RewriteRule ^([-a-zA-Z0-9]+)-([-a-zA-Z0-9]+)\.html$ /test/index.php?type=normal&id=$1&titel=$2 [L]


LG

17.12.2010 19:29

19 pdm_2011

ich nochmal, da kommt immer folgende fehlermeldung:

The requested URL /test/normal-1-Kontakt.html was not found on this server

hier mein php script vielleicht ist da was falsch, weis abe rnicht wo:

<?php
if(isset($_GET['id']) or isset($_GET['neuid']))
{
echo 'hat alles geklappt..<br><br>';

if(isset($_GET['neuid']))
{
$id = $_GET['id'];
$titel = $_GET['titel'];
$neu_id = $_GET['neuid'];

echo $id . ' ' . $titel . ' ' . $neu_id . '<br><br>';
}
else
{
$id = $_GET['id'];
$titel = $_GET['titel'];

echo $id . ' ' . $titel . '<br><br>';
}
}
else
{
echo 'das war wohl nix...<br><br>';
}

$host = ".....";
$user = ".....";
$pass = ".....";
$db_d = ".....";

$sql_con = mysql_connect($host,$user,$pass);
$sql_db_con = mysql_select_db($db_d);

$query = "SELECT * FROM url_rewrite";
$resultID = mysql_query($query);
$z = 0;

while ($data = mysql_fetch_array($resultID))
{
$rrr = $data["id"]+1;
?>
<a href="normal-<?php echo $data["id"] ?>-<?php echo $data["titel"] ?>.html"><?php echo $z ?> normal testlink</a> -
<a href="erweitert-<?php echo $data["id"] ?>-<?php echo $data["titel"] ?>-<?php echo $rrr ?>.html">erweitert testlink</a><br>
<?php
$z++;
}
?>

17.12.2010 19:32

20 Jörg Kruse

Entferne mal den beginnenden Slash:

RewriteRule ^([-a-zA-Z0-9]+)-([-a-zA-Z0-9]+)\.html$ /test/index.php?type=normal&id=$1&titel=$2 [L]

... sonst sucht der Server die Datei im Root des Betriebssystems

17.12.2010 19:46