Hallo, ich habe einen dynamischen LInk und möchte gerne die Endung des Links mit mod_rewrite abändern. Leider klappt es aber nicht.
"beipiel.de/datei.php?a=1&b=2"
soll ungefähr das ergeben:
"beipiel.de/datei/1/2/"
In der .htaccess steht:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_URI} datei/(.*)/(.*)/$
RewriteRule datei/(.*)/(.*)/$ /datei.php?a=$1&b=$2
In welchem Ordner muss sich die .htaccess befinden ?
Ich nutze Xampp und die datei.php befindet sich im htdocs Ordner.
Muss die datei.php in der .htaccess wie ein Link eingebunden werden,
also absolut oder relativ ?
Also würde es auch so gehen:
RewriteCond %{REQUEST_URI} http://localhost/datei/(.*)/(.*)/$
RewriteRule datei/(.*)/(.*)/$ /http://localhost/datei.php?a=$1&b=$2
Darf die .htaccess Datei die Endung .txt haben ?
Wäre super wenn sich hier jemand damit auskennt. Habe schon soviele Seiten besucht zu dieseem Thema aber bei mir hat es bisher nicht geklappt.
Ist leider das falsche Forum. Ich verschieb es mal.
Peter
AmicaNoctis
06-07-2010, 15:15
Hallo,
Code-Tags für den htaccess-Code würden die Lesbarkeit deines Beitrags stark verbessern.
Ich habe den Verdacht (korrigier mich ggf. bitte), dass du der Ansicht bist, dieses Rewriting würde deine Links umwandeln und schön machen. Das ist aber nicht so. Es leitet nur die Anfrage vom Browser so um, dass du z. B. viele URLs mit einem einzigen Script verarbeiten kannst. In deinem Beispiel leitet es eine Anfrage mit der URL /datei/1/2/ an das Script /datei.php weiter und gibt diesem Script per GET noch ein paar Parameter mit.
Damit der Browser diese schöne URL aber erstmal aufruft, musst du ihm die in Form eines Links mitteilen. Die Seite, in der dieser Link untergebracht ist, muss daher z. B.
<a href="/datei/1/2/">...</a> enthalten. Wenn dort dagegen bereits <a href="/datei.php?a=1&b=2">...</a> drin steht, ruft der Browser das auch so auf und mod_rewrite hat gar nichts zu tun.
Kurz gesagt: du musst dich selbst darum kümmern, deine URLs schön zu machen, mod_rewrite übersetzt sie nur wieder zurück.
Gruß,
Amica
Ich möchte eine Suchabfrage ausführen und in der Browserleiste wird das dann immer so dargestellt:
"http://localhost/ordner/Suche.php?a=+&b=+&ort=+&suche=Minden&umkreis=25&submit=suche"
Jetzt möchte ich am liebsten, dass es so dargestellt wird:
[/URL]
"[URL]http://localhost/ordner/Suche/wert1/wert2/wert3/Minden/25/suche (http://localhost/ordner/Suche/wert1/wert2/wert3/Minden/25/suche)"
oder so ähnlich, hauptsache der .PHP Endung ist weg.
Wie mache ich sowas ?
AmicaNoctis
06-07-2010, 16:08
Wie mache ich sowas ?
Hast du mal meinen Beitrag gelesen? Es wird immer so in der Adressleiste stehen, wie du es auch im href-Attribut auslieferst – daran wird auch mod_rewrite nichts ändern.
Also: bau zuerst die Links um.
Links habe ich eigentlich gar nicht. Nur die Abfragen in der Datenbank mit MYSQL. Dann wird das automatisch so angezeigt. Da weiss ich jetzt nicht was ich daran ändern muss. Oder geht das gar nicht ?
AmicaNoctis
06-07-2010, 16:46
Stell mal dein Formular von method="get" auf method="post" um.
Mit POST funktioniert meine datensatznavigation nicht mehr, daher kann ich nur GET verwenden. Hast Du ne Ahnung wo man ein brauchbares Skript zum Entfernen der .php Endung findet ?
AmicaNoctis
06-07-2010, 16:59
Willst du jetzt doch nur die Endung wegbekommen? Ich dachte, es geht um die GET-Parameter? Nenn das Script einfach index.php und setz das action-Attribut auf das Verzeichnis, wo es drin liegt:
Script: projektordner/foo/bar/suche/index.php
ActionURL: http://example.com/foo/bar/suche/
Danke, aber das klappt bei mir nicht.
Ich möchte gerne alle Dateien ohne Endung haben.
Irgendwie müsste das gehen.
AmicaNoctis
06-07-2010, 17:49
Dann erzeuge die href- bzw. action-Attribute eben ohne Dateierweiterung und nutze mod_rewrite, um sie sozusagen wieder dranzuhängen.