Modrewrite: /?id=1&var=alpha zu /begriff

exportforce

Avachangererfinder
ID: 68278
L
23 April 2006
256
22
Hallo,

da hier ja wirklich schnell und sehr gut geholfen wird, wollte ich mal folgendes Problem schildern.
Ich möchte nicht wie die meisten einfach aus /?x=1 einfach /1/ machen, sondern ich möchte es so gestalten das aus 2 Vars die per PHP ausgelesen werden sollen, in der URL nichts zu sehen ist, sondern nur der Begriff.

Es geht darum das ich grad an einem kleinen Lexikon arbeite und ich möchte halt das man anstatt per /?id=XX&var=XX z. B. https://www.domain.de/begriff aufruft. Nun stellt sich mir die Frage, wie nehme ich "begriff" in meine PHP auf und kann das dann nutzen und wie muss die htaccess aussehen ?

Ich glaube mal gelesen zu haben, ist aber schon etwas her :? das man, ich glaube mit
RewriteCond %{REQUEST_FILENAME} !-f
oder so ähnlich sowas realisieren kann ?
Im endefekt, müsste ich ja nur das /begriff/ als variable bekommen, dann kann ich es aus der Datenbank auslesen und nutzen.

Danke schon mal für eure Hilfe.

lg
 
Nein das wollte ich nicht, hatte ich auch geschrieben.
Diese Möglichkeit ist für mich uninteressant.
Bei mir ist bei https://www.domain.de/BEGRIFF der Begriff nur wichtig.
Diesen möchte ich auslesen OHNE das dafür bei der eigentlichen URL dann noch eine Var angegeben wird. BEGRIFF wird von mir dann ausgelesen und per MySQL abgefragt.

Die eigentliche URL ist so aufgebaut: https://www.domain.de/?x=a&y=b
Mit diesen 2 angaben suche ich aus der DB eigentlich den Begriff, so das Grundscript. Aber der User soll die Seiten per ./BEGRIFF ansteuern.
 
da wäre gut zu wissen, ob x oder y dann den begriff beinhalten soll..

ansonsten

HTML:
RewriteRule ^([a-z0-9-_])$ index.php?x=$1 [NC,L]
 
Erstmal danke für den Versuch, aber genau das gleiche hat dein Vorredner auch schon gepostet.... Aber wie ich schon geschrieben habe normalerweise wird durch Var "X" und "Y" der Begriff gesucht (Durch Menüführung) nun soll aber der User durch die rewrite (welche NICHT! durch die jetzt 2 mal genannte Methode) in die Browserzeile z. B. https://www.domain.de/BEGRIFF auf die entsprechende Seite geleitet werden. Dies geht aber nur wenn ich "BEGRIFF" auslesen kann und auch hier jetzt noch einmal wiederholt X und Y behinhalten NICHT (nada, not, njet) den Begriff, sonst hätte ich es schon lange fertig.

Also bitte keine weiteren Vorschläge wo X/Y den Begriff bekommt.
Dies ist der einzige Vorschlag den ich in nun 8 Foren bekomme.

Ich will per PHP nur wissen WAS nach / geschrieben wird.
So megafalsch kann ich mich doch nicht ausdrücken :-?:(
 
Hier, teste mal:

:arrow: .htaccess
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?$1 [L]
:arrow: index.php
PHP:
<?php
	echo $_SERVER['QUERY_STRING'];
?>
 
ich denke das problem is, dass du mit x und y wahrscheinlich zahlwerte hast.

beispiel hinter x=4 befindet sich das wort auto.

jetz willst du aber nich /?x=4 haben und auch nicht /4 sondern

/auto

wenn ich das jetzt alles richtig verstanden habe. dazu müsstest du deine mysql abfrage ändern.

Ansonsten, siehe theilax post;)
 
Danke Tleilax, genau das hab ich gebraucht :D

edit:
Hmmm, aber wenn ich das jetzt für die Abfrage nutze passiert garnichts? :(
Der verweigert mir, wenn ich anhand des übergebenen Wertes von hand die X und Y raussuche, die Ausgabe :?

edit 2:
Bei der Methode wirft er mir jedes Mal noch den kompletten pfad an die URL mit dran :? *wunder*

Klappt wohl doch net :(
 
Zuletzt bearbeitet:
wie wäre es dann mal mit ner url und ein wenig quelltext?;)

URL gibts per PN.

QT für die Abfrage durch htacces sieht so aus:

PHP:
if(isset($_SERVER['QUERY_STRING']))
{
	$abfragewort=$_SERVER['QUERY_STRING'];
	$sql="SELECT * FROM `begriff` WHERE `titel`='$abfragewort'";
	$ergebnis=mysql_query($sql,$conn);
	if(mysql_num_rows($ergebnis)==1)
	{
		while($row=mysql_fetch_object($ergebnis))
		{
			$_GET['letter']=$row->kat;
			$_GET['id']=$row->id;
		}
	}
}
else
echo mysql_error();
 
Moin,

dann schick mal die Url per PN :wink:

Du solltest jedoch keine Abfrage alla:

Code:
SELECT * from...

ausführen, besser wäre:

Code:
SELECT tablename1,tablename1,tablename1 from...

usw. :evil:
 
Hallo.
Habe das teilweise bei mir so gelöst:
RewriteRule ^seite/num/(.*)/katalog/(.*)/ seite/view_item.php?TestenID=$1&TestID=$2

Link: /seite/num/Wert1/katalog/Wert2/
String: /seite/view_item.php?TestenID=$1&TestID=$2

Das hat immer gut funktioniert.
 
Zuletzt bearbeitet:
@X2H
Ja so ist es ja auch "einfach" ^^
Aber das bringt mich nicht wirklich weiter :(
Ich bekomm den Request einfach nicht durch :-?
 

hrhr, wenn ich sowas sehe würde ich sofort folgendes aufrufen:

www.deinedomain.de/begriff'%20LIMIT%200%20UNION%20SELECT...

Was ich damit andeuten will: Achte auf Injections ;) Also nimm
$abfragewort=mysql_real_escape_string($_SERVER['QUERY_STRING']); anstatt von $abfragewort=$_SERVER['QUERY_STRING'];


Wenn ich mir dein Code genauer anschaue ist er iwie unlogisch, wenn $_SERVER['QUERY_STRING'] nicht gesetzt wurde soll er mysql_error() ausführen, aha :roll: (Ist $_SERVER['QUERY_STRING'] nicht immer gesetzt?)

Dürfte besser sein:

PHP:
if(!empty($_SERVER['QUERY_STRING']))
{
    $abfragewort=mysql_real_escape_string($_SERVER['QUERY_STRING']);
    $sql="SELECT `kat`, `id` FROM `begriff` WHERE `titel`='$abfragewort'" OR die(mysql_error());
    $ergebnis=mysql_query($sql,$conn);
    if(mysql_num_rows($ergebnis)==1)
    {
        while($row=mysql_fetch_object($ergebnis))
        {
            $_GET['letter']=$row->kat;
            $_GET['id']=$row->id;
        }
    }
}