Suchen
Inside Forum
Nützliche Links




 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > Server > Administration

Administration Alles rund um den Betrieb und die Konfiguration eigener Server (Apache, mod_rewrite, etc.)

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 08.10.2017, 18:23
pflumu81 pflumu81 ist offline
Neuer Besucher
 
Registriert seit: 20.11.2016
Beiträge: 14
Standard Problem mit mod_rewrite

Hi zusammen!

Ich habe folgende URL:
http://meinedomain.de/demo/dsi/details/498/Blaustein

Diese versuche ich mit htaccess auf diese URL weiterzuleiten:
http://meinedomain.de/demo/dsi/details.php?objid=498&s=Blaustein

Meine htaccess sieht so aus:
Code:
Options +FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteRule ^page/([0-9]+)/(.*)$ site.php?site_id=$1&s=$2
RewriteRule ^details/([0-9]+)/(.*)$ details.php?objid=$1&s=$2


Die Seite bleibt zwar leer, aber der Inhalt aus der Datenbank mit der übergebenen ID wird nicht ausgelesen. Wenn ich die Seite dagegen direkt so aufrufe, funktioniert es: http://meinedomain.de/demo/dsi/details.php?objid=498&s=Blaustein

Kann mir jemand weiterhelfen? Lokal unter XAMPP funktioniert es wunderbar. Aber auf dem Server wird die ID scheinbar nicht weitergegeben.... Muss ich vielleicht etwas an der PHP.ini verändern?

LG Oli

Geändert von Marc Ermshaus (26.10.2017 um 13:29 Uhr) Grund: URLs lesbarer gemacht
Mit Zitat antworten
  #2  
Alt 26.10.2017, 13:54
Marc Ermshaus Marc Ermshaus ist offline
Forum-Mitarbeiter
 
Registriert seit: 06.09.2004
Beiträge: 5.413
Standard AW: Problem mit mod_rewrite

Code:
demo
`-- dsi
    |-- details.php
    `-- .htaccess


.htaccess:

Code:
RewriteEngine On

#RewriteBase /demo/dsi

RewriteRule ^details/([0-9]+)/(.*)$ details.php?objid=$1&s=$2


RewriteBase gegebenenfalls einkommentieren. Ich kann aus dem Stegreif nicht erklären, wann das notwendig ist.

Geändert von Marc Ermshaus (26.10.2017 um 15:24 Uhr)
Mit Zitat antworten
  #3  
Alt 26.10.2017, 15:51
Kasalop Kasalop ist offline
Forum-Mitarbeiter
 
Registriert seit: 29.12.2006
Ort: München
Beiträge: 5.721
Standard AW: Problem mit mod_rewrite

Zitat:
Zitat von Marc Ermshaus Beitrag anzeigen
RewriteBase gegebenenfalls einkommentieren. Ich kann aus dem Stegreif nicht erklären, wann das notwendig ist.
Ich versuche es mal kurz und trotzdem auf den Punkt zu erklären:
1) Es ist ein Unterschied ob man von Notwendig spricht oder von empfohlen:
- Empfohlen ist es immer sobald eine relavtive Pfadangabe als Ziel einer RewriteRule verwendet wird (zweites Argument).
- Notwendig ist es meistens nur, wenn die Regel einen http redirect beinhaltet oder wenn auf ein Verzeichnis oberhalb des Ortes der htaccess datei zugegriffen werden soll (und man saubere pfade haben möchte).
2) Wird kein http redirect verwendet, dann ist rewritebase nicht notwendig, allerdings kann er die htaccess datei übersichtlicher und portabel machen (s. folgendes Beispiel).

Ein kleines Beispiel zur Verwendung von RewriteBase
Die RewriteBase definiert einen Basispfad für relative URI (nicht Dateisystem) Angaben beim weiterleiten. Mit einer leicht abgeandelten Verezichnisstruktur lässt sich das recht leicht erläutern:
Code:
demo
|-- dsi
    |-- details.php
    `-- .htaccess #im folgenden htaccess1
`-- index.php


Betrachten wir als erstes die htaccess1. Diese liegt im Verzeichnis /demo/dsi/. Eine Regel der Form
Code:
RewriteRule ^details/([0-9]+)/(.*)$ details.php?objid=$1&s=$2

bezieht sich also auf einen Aufruf im Verzeichnis /demo/dsi/ und dort auf den Pfad details/xx/yyy. Das ist nur das "Matching", hierauf hat RewriteBase keinerlei Einfluss! Das Ziel der Regel ist nun aber details.php?.... details.php ist eine relative Angabe und wird so alleinstehend auf den Ort der htaccess Datei bezogen. Es wird also nach /demo/dsi/details.php?... weitergeleitet.
Empfohlen wäre hier die Angabe einer RewriteBase, da das Ziel ein relativer Pfad ist, notwendig ist sie aber nicht.
Angenommen es soll auf die index.php im /demo/ Verzeichnis zugegriffen werden, dann kann dies entweder über ../ gelöst werden oder durch die Angabe einer RewriteBase:
Code:
RewriteBase /demo/
. Somit beziehen sich die Ziele der Regeln auf das /demo/ Verzeichnis und nicht auf das Verzeichnis in welchem die htaccess Datei liegt.
Dies macht den Code sauberer zu lesen (mMn.) und weiterhin auch portabler.

Kommen wir zu einem Notwendigen Fall: Ein http redirect mit relativem URI Anteil:
betrachten wir die abgewandelte Regel von oben erneut (man achte auf den R-Modifier):
Code:
RewriteRule ^details/([0-9]+)/(.*)$ details.php?objid=$1&s=$2 [R]

Nun wird der gesamte Dateipfad fälschlicherweise ergänzt und dann das gesamte als URI Pfad angehängt. Die Regel führt also zu einer Umleitung auf http://example.com/var/www/client1/html/demo/dsi/details.php?.... Das ist natürlich nicht gewollt. Die Angabe einer RewriteBase führt hier dann dazu, dass die relative Angabe korrekt nach http://example.com/demo/dsi/details.php?... weitergeleitet wird.

Hier noch ein Empfohlen, aber nicht notwendiger Fall (Übersichtlichkeit):
Code:
RewriteRule /foo$ /subdir1/subsubdir1/foo.php
RewriteRule /bar$ /subdir1/subsubdir1/bar.php
RewriteRule /baz$ /subdir1/subsubdir1/baz.php
RewriteRule /foobar$ /subdir1/subsubdir1/foobar.php


Mit RewriteBase:
Code:
RewriteBase /subdir1/subsubdir1/
RewriteRule /foo$ foo.php
RewriteRule /bar$ bar.php
RewriteRule /baz$ baz.php
RewriteRule /foobar$ foobar.php

Die Datei kann nun auch einfach kopiert werden und es muss nur die rewritebase angepasst werden und nicht jeder einzelne Pfad.

Das nur als Ergänzung.
__________________
Es gibt 10 Arten von Menschen auf der Welt. Die die die binäre Mathematik verstehen und die die sie nicht verstehen!

Zu welcher der Gruppen gehörst du?
Mit Zitat antworten


Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mod_rewrite Problem alexandra1991 sonstige (Programmier-)sprachen 4 06.03.2013 23:23
mod_rewrite problem Ueberdosis Administration 8 22.06.2010 17:48
mod_rewrite Problem Creator PHP 6 07.01.2009 19:26
Problem mit mod_rewrite Weissbierwaldi PHP 5 14.04.2006 11:27
mod_rewrite problem sol Administration 1 12.02.2005 20:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:36 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC