• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wie bekomm ich solche URLS hin ?

wolli22

Neues Mitglied
Hy,

Wie bekomm ich solche URLS hin ?

domain.de/index.php?=id2

So in der art ..

So klappts nicht

Code:
DirectoryIndex index.php

RewriteEngine On

RewriteRule ^page/(.*)$ index.php?cstart=$1 [L]
 
Werbung:
Werbung:
Um das zu beantworten, musst du uns mehr Informationen zur Struktur auf deinem Server geben.

1.) Du möchtest also URLs, die ?id=bla oder ?id=zahl haben, richtig?
2.) Deine bisherige Webseite setzt auf HTML-Dateien, ein CMS, oder was?
3.) Möchtest du nur mit mod_rewrite es "anders" aussehen lassen oder wirklich was ändern?

Möchtest du über GET inkludieren, so sei dir die FAQ (http://www.html.de/php/5107-faq-frequently-asked-questions-php.html#post56971) als Anhaltspunkt genannt.
 
vielleicht hat er sich auch gar nicht verschrieben und wills tatsächlich so
Code:
.php?=id2
haben.

Dann wäre die Frage, ob man des so lassen kann und mit
Code:
$_GET['']
des wirklich abfragen kann, oder ob mans mit mod rewrite machen muss.


Wenns erste geht, dann muss er einfach am Anfang von seinem Skript
Code:
$_GET['cstart'] = $_GET[''];
schreiben.



Hoffe ich habe die
im günstigsten Fall unzureichend[e]
Frage richtig interpretiert.




Gruß
vanGoss
 
Werbung:
das ist aber was anderes als in deinem ersten post stand
egal


wenn du php dateien hast, kennst du dich bestimmt mit php aus?
weil du dann einfach in deiner index.php das get abfragst und je nach dem sachen ausgibst


Gruß
 
Hmm bekomms einfach nicht hin..

Mal als Beispiel.

Hab in der Navigation einen Punkt mit dem namen "Tutorials".
Wenn ich da drauf klicke kommt eine Seite mit dem Tutorial Verzeichniss.

Die URL ist meineseite.de/tutorials.php

Nun möchte ich wenn ein user sich ein tutorial auswählt, die URL sich folgendermaßen ändert:

Normal ist sie dann meineseite.de/tutorial_ueber_gfx.php
Ich möchte sie aber so haben meineseite.de/tutorial.php?gfx

Die url ist nur ein besipiel , ob da jetzt = oder ? drinnen sind ist mir egal ...

Hier hab was gefunden:

1.) /index.php?pageid=12

Der Klassiker. Google hat übrigens keine Probleme mit solchen URLs, es heißt, dass Google erst ab 6 Parametern die Nase rümpft, neuerdings angeblich erst ab 9. Es gibt aber nicht nur Google, sondern auch Menschen, und die zählen die Parameter nicht ab; oft ist schon einer zuviel.

Die Implementierung scheint einfach: Man bringt der index.php bei, auf den Parameter pageid zu hören und gibt in showmenu2 statt [a] an: <a href="/index.php?pageid=[page_id]" ... >

Das funktioniert solange, bis kein Modul im Spiel ist, das selbst Seiten anlegt (News, Topics, Bakery), und: das selbst keine Parameter angibt, wie manche Bildergalerien.
In der Praxis ist also von dieser Variante nur abzuraten. Sie macht irgendwann Ärger.

Nur wie sag ich der tutorials.php das sie nun id=1 ist ? :/
 
Werbung:
Nur wie sag ich der tutorials.php das sie nun id=1 ist ? :/
Gar nicht. Dir scheint nicht klar zu sein, um was es sich dabei handelt. Normalerweise hast du eine ID, wenn du eine Datenbankabfrage machst, z.b. weil dort die Inhalte der Artikel stehen. Das kannst du nicht willkürlich festlegen, sondern dieser Wert kommt aus dem System, dass du offensichtlich nicht hast.
 
Du hast offenbar das Prinzip nicht verstanden.
Ein solcher Parameter wird über $_GET[] ausgelesen, damit z.B. eine Routine weiß, was sie bei diesem oder jenem Parameter zu tun hat.

Beispiel:
Du hast deine tutorials.php
Die besteht jetzt im Groben aus zwei Links.
Wenn man einen der beiden Links klickt, soll sich der Inhalt änder. Sprich: das ausgewählte Tutorial angezeigt werden.
Die einzelnen Tutorials speicherst du in separate Seiten.
Nennen wir sie mal tut1.php und tut2.php

So weit so gut

Anhand dieses Beispieles sähe dein Code in etwa so aus (vereinfachte darstellung ohne HTML-Grundgerüst!):
PHP:
<?php
// Der Parameter id= wird abgefragt um zu entscheiden, was dargestellt werden soll
// Zuerst ob er leer ist
if(empty($_GET['id'])){
// Wenn id leer ist, wird die Linkauswahl angezeigt
	echo "<a href='tutorials.php?id=1'>Tutorial Eins</a>";
	echo "<a href='tutorials.php?id=2'>Tutorial Zwei</a>";
// Dann kann man z.B. folgendermaßen vorgehen um bei nicht leerem Parameter id= den entsprechenden Inhalt anzuzeigen
} else if(file_exists("tut".$_GET['id'].".php")){
	include("tut".$_GET['id'].".php");
// Und zum Schluss noch den fall der nicht existenten ID
} else {
	echo "Fehler: Seite existiert nicht!";
}
?>
 
scheint irgendwie eine modeerscheinung zu sein, dass jetzt jeder URL nur noch aus GET-variablen zu bestehen hat...

Nils aka XraYSoLo
 
Werbung:
Ich denke auch, dass GET-URLs häufig auf Unkenntnis von Rewriting-Ansätzen hindeuten.

Das ist leider nicht in ein paar Sätzen zu erklären. (Ich kann es jedenfalls nicht.)

Ein Minibeispiel: News-Einträge anhand von ID darstellen. In GET-Begriffen: index.php?action=shownews&id=<newsid>

Das lässt sich völlig problemlos und funktional identisch auch über einen URL wie news/<newsid> abbilden.

Per mod_rewrite (Apache) und .htaccess die URLs auf index.php umleiten:

Code:
RewriteEngine On

# If a resource exists, serve it

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

# Otherwise, redirect to index file

RewriteRule ^.*$ index.php [NC,L]

Simple Auswertung:

PHP:
<?php

$basePath     = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME);
$requestPath  = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$relativePath = substr($requestPath, strlen($basePath));

$pathParts = explode('/', trim($relativePath, '/'));

var_dump($pathParts);

if ($pathParts[0] === 'news') {
    echo 'News-Seite soll ausgegeben werden.<br>';
    echo 'ID: ' . $pathParts[1];
}
 
Ich glaub, das war jetzt Perlen vor die Säue mermshaus ;)
Er will ja auf Biegen und Brechen parametierte URLs haben...warum auch immer.
Alle Welt versuchts zu vermeiden und er will's haben :D
 
Werbung:
also wie ich das mitbekommen habe, sind reine parameter-URLs sogar zweckentfremdung im eigentlichen sinne. ich und weitere mir persönlich bekannte programmierer nutzen sie nach ihrem "ursprünglichem sinn"; und zwar dann, wenn innerhalb eines bestenden dokuments überprüfungen und/oder auswertungen abgearbeitet werden müssen und wegen der variablenverfügbarkeit ein weiteres dokument deutlich unpassend wäre.
alles andere kann man in separaten dateien ausgeben.
zudem ist switch() allem voran doch ein kleiner ressourcen-fresser, der zwar nicht weiter auffällt, aber wegen der sauberkeit nur dann verwendet werden sollte, wenn man ihn auch wirklich braucht.

erinnert mich irgendwie an frames, tabellen und include() als modeerscheinung.
richtiges programmieren ist doch wie krafttraining und hip hop, wenige praktizieren es, noch weniger verstehen es, aber jeder hat eine meinung dazu.

Nils aka XraYSoLo
 
naja include als Modeerscheinung?
Ich hab ganz viele Includes, z.B. eine Datei mit Klassen und FUnktionen, eine mit Header und so.

Ich benutze die Get Parameter aber eigentlich auch nur für ids in Artikeln oder so, aber einmal auch in Verbindung mit .htaccess als ACP.
da ist die admin.php geschützt und includiert den Get-Parameter Seite, in denen gibts dann ein if des halt danach schaut, ob des einen server remote user gibt und gibt dann halt das ACP aus.


btw: ist switch echt ein Ressourcenfresser?


Gruß vanGoss
 
XraYSoLo schrieb:
also wie ich das mitbekommen habe, sind reine parameter-URLs sogar zweckentfremdung im eigentlichen sinne. ich und weitere mir persönlich bekannte programmierer nutzen sie nach ihrem "ursprünglichem sinn"; und zwar dann, wenn innerhalb eines bestenden dokuments überprüfungen und/oder auswertungen abgearbeitet werden müssen und wegen der variablenverfügbarkeit ein weiteres dokument deutlich unpassend wäre.
alles andere kann man in separaten dateien ausgeben.

Mir ist nicht klar, wie du das meinst.

zudem ist switch() allem voran doch ein kleiner ressourcen-fresser, der zwar nicht weiter auffällt, aber wegen der sauberkeit nur dann verwendet werden sollte, wenn man ihn auch wirklich braucht.

Quelle?

erinnert mich irgendwie an frames, tabellen und include() als modeerscheinung.

switch ist eine Kontrollstruktur. Ich sehe nicht, wie die in Vergleich passt. Ich nehme an, du beziehst dich auf das Front-Controller-Pattern. Das als „Modeerscheinung“ zu bezeichnen, passt vorne und hinten nicht.
 
Werbung:
Zurück
Oben