index.php?site=showdetails&id=1 -> /index/showdetails

Eines der wichtigsten Anwendungsgebiete von mod_rewrite ist das umschreiben von dynamischen in statische URLs um "suchmaschinenfreundliche URLs" zu erzeugen. Aber was ist besser fürs Ranking? http://www.url.com/12_2.htm, http://www.url.com/url,12,2.htm oder doch lieber http://www.url.com/12/2/url/ Fragen zum URL-Design werden hier diskutiert.

Moderator: Super-Mod

index.php?site=showdetails&id=1 -> /index/showdetails

Beitragvon ViperTK » 06.05.2010 15:37

Hallo liebe Community,

ich hoffe ihr könnt mir hier helfen :).
Das Forum wurde mir nun schon von mehreren empfohlen und da ich in meinem selbstlernprozess noch zu oft an meine Grenzen stoße, hoffe ich hier Hilfen finden zu können :).

Wie im Thema schon beschrieben möchte ich gerne folgende RewriteRule irgendwie definieren, an sich klappt die Umleitung auch, aber irgendwie funktionieren dann die Stylsheets und Images nicht :/.

Ich habe folgende 3 Szenarien:

Die erste wäre, wenn es sich um eine Detailseite handelt, ist die entsprechende ID wichtig und muss mit übergeben werden.
index.php?site=showdetails&id=1 -> /index/showdetails/1

Jedoch gibt es eben auch Seiten, die einfach ohne SQL Daten auskommen und somit auch keine ID oder sonstiges benötigen.
index.php?site=aboutus -> /index/aboutus

Außerdem kann es sich auch um eine andere *.php-Datei handeln, daher benötige ich hier auch eine Variable mehr.
admincenter.php?site=user -> /admincenter/user

Es existieren also mehrere verschiedene *.php-Dateien, die wahlweise entweder nur einen Parameter per $_GET übergeben bekommen, oder aber auch in einigen Fällen zwei.
Ich denke der ?site Wert bleibt immer konstant, also muss hier keine Variable oder sonstiges eingeführt werden.

Ich habe schon vieles hier gelesen und auch ausprobiert, meine aktuelle Regel für die genannten Szenarien lautet:

Code: Alles auswählen
RewriteEngine on
RewriteRule ^([^./]+)/([^/.]+)$ $1.php?site=$2 [L]


Die Umleitung funktioniert wohl auch, ich bekomme immer die entsprechenden Seitenelemente angezeigt, jedoch fehlen eben sämtliche Stylesheet-Informationen, sowie die Images.

Sofern ich nur folgende Regel, anstatt die oben genannte verwende, funktioniert die Umleitung auch mit Styleshett und Images, jedoch bin ich dann nicht in der *.php-Datei variabel und ebenso fehlt mir der wichtige ID parameter an den entsprechenden Stellen.

Code: Alles auswählen
RewriteEngine on
RewriteRule ^([^/.]+)$ index.php?site=$1 [L]



Vielen Dank schonmal im Voraus.
Ich hoffe meine Beschreibung hilft euch mein Problem nachzuvollziehen und jemand hat da eine Lösung parat :).

Für mich stellt sich zudem das Hauptproblem, dass es nicht immer diesen Parameter &id= gibt, was für mich die Sache schon so sehr erschwert, dass ich dort nicht mehr weiterkomme.

Liebe Grüße
ViperTK
ViperTK
.
.
 
Beiträge: 4
Registriert: 06.05.2010 15:14

Beitragvon NOdrich » 07.05.2010 06:32

ich hatte ein ähnliches problem.

ich habe es durch eine weitere rewriterule gelöst, denn (ich kann mich täuschen) wenn deine site ein stylesheet oder image abruft läuft dieser abruf wieder über deine htaccess.

ich habe mit RewriteRule ^(images/|styles/)*$ - [L] (also so in der art denke ich wars)

alle stylesheets und images aus der "normalen" rewriterule rausgenommen und dann hats auch damit geklappt. Evtl sollte dir aber jemand anders eine "gute" rule empfehlen.

lg
NOdrich
.
.
 
Beiträge: 7
Registriert: 05.05.2010 12:57

Beitragvon ViperTK » 07.05.2010 10:53

Hey,

erstmal vielen lieben Dank an dich für deine Antwort.

Nunja ich habs mal probiert mit deiner Regel, funktioniert leider immernoch nicht.
Aber kann doch nicht sein, dass ich jetzt überall so Zeilen hinzufügen muss.

Code: Alles auswählen
<link rel="stylesheet" type="text/css" href="<?=$domain;?>css/style.css" />


Das muss sich doch auch anders beheben lassen, kann ich mir beim besten Willen nicht vorstellen.

Ich habe also nachher in der URL so Links stehen wie:

Code: Alles auswählen
www.domain.de/index/aboutus


Soweit denke ich funktioniert es auch, wie schon im vorherigen Post erwähnt nur leider wollen die CSS sowie Images nicht :/.
Bitte um weitere Hilfen, bin für alle Ideen etc. sehr sehr dankbar.

Liebe Grüße
ViperTK
.
.
 
Beiträge: 4
Registriert: 06.05.2010 15:14

Beitragvon NOdrich » 07.05.2010 11:24

zunächst würde ich (ich masse das grundsätzlich) nicht
ViperTK hat geschrieben:
Code: Alles auswählen
<link rel="stylesheet" type="text/css" href="<?=$domain;?>css/style.css" />


sondern

Code: Alles auswählen
<link rel="stylesheet" type="text/css" href="/css/style.css" />


damit greifst du schonmal von haus auf auf das root verzeichnis zu

und was die rewriterule betrift schaue ich nachher nochmal auf meinem localhost und poste dir die nochmal ... die macht ja nichts anderes als dein img und css verzeichnis (je nach belieben auch mehr) aus der "normalen" rewrite rule herauszunehmen.

Edith:

Code: Alles auswählen
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^images/|favicon.ico - [L]


Das ist meine rule für images und das favicon
lg
Zuletzt geändert von NOdrich am 11.05.2010 06:26, insgesamt 1-mal geändert.
NOdrich
.
.
 
Beiträge: 7
Registriert: 05.05.2010 12:57

Beitragvon ViperTK » 10.05.2010 15:12

Die Lösung ist ganz einfach
Code: Alles auswählen
<base href="http://www.domain.de/" />
in <head>-Bereich deiner HTML-Dateien eintragen.
[/quote]

Genau das war der richtige Eintrag, jetzt klappt alles wunderbar, die Rules habe ich auch entsprechend hinbekommen. Falls nochmal jemand Probleme haben sollte und über den Thread hier stolpert, hier meine Lösung:

Code: Alles auswählen
RewriteEngine on
RewriteRule ^([^/.]+)$ $1.php [L]
RewriteRule ^([^./]+)/([^/.]+)$ $1.php?site=$2 [L]

___________________________________________________________

Desweiteren hätte ich noch eine Frage, über die ich schon länger am senieren bin, jedoch immernoch nicht wirklich weiss wie dafür die RewriteRule aussieht bzw. wie man das ganze überhaupt handhabt.

Code: Alles auswählen
http://www.domain.de/artikel/14472/css-interview-mit-kai-kai-schafer-man-kann-nie-genug-fur-die-eps-vorbereitet-sein_css/

Wie bekomme ich eine solche RewriteRule hin?
Bzw. weiss ich ja, dass die dort zu sehende URL einfach nur unsichtbar für uns User weitergeleitet wird an beispielsweise an
Code: Alles auswählen
http://www.domain.de/artikel.php?id=14472

Was ich mir allerdings noch nicht erklären kann, wie ich aus der id 14472 dann den Title bekomme, den ich dann mit in die neue statische URL einfüge?
Was muss ich hierfür vll sogar an der artikel.php ändern, oder wie kann man das ganze überhaupt angehen und umsetzen?

Ich bedanke mich wieder einmal recht herzlich im Voraus bei allen die evtl. einen Tip für mich bereit haben.

Liebe Grüße
ViperTK
ViperTK
.
.
 
Beiträge: 4
Registriert: 06.05.2010 15:14


Zurück zu URL-Design

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron