Seite 1 von 1

Problem mit RewriteRule

Verfasst: 30.04.2009, 11:02
von dahead
Habe mir schon mehrere Links im Internet angeschaut, unter anderem auch auf modrewrite.de und in dem Forum .. und auf wikipedia und und .. viele lösungsvorschläge ausprobiert, aber kriege es einfach nicht hin :/

Mein Problem ist aber ein ganz einfaches:

1. ich möchte die Dateiendung (.html oder .php) sozusagen entfernen und alle Anfragen intern zb. example.de/kontakt an example.de/kontakt.php leiten lassen

2. möchte ich zb. aus example.de/news.php?title=XYZ example.de/news/XYZ machen. auch hier habe ich bereits einiges ausprobiert, so auch das Prinzip, das bei Wikipedia vorgeschlagen wird:

Code: Alles auswählen

RewriteEngine on
RewriteRule ^/wiki/(.*)$ /w/index.php?title=$1


funktioniert einwandfrei.

jedoch ohne Erfolg .. was kann da schief laufen?

/edit
habe jetzt zum Test ein anderes Anwendungsbeispiel von mod_rewrite von modrewrite.de ausprobiert und es funktioniert ebefalls nicht!

Code: Alles auswählen

RewriteEngine on
RewriteRule ^(.*).html$ $1.php
Aber Befehle wie "ErrorDocument 404" oder "Redirect 301" funktionieren.

Hat jemand eine Idee?

/edit2
Jetzt bin ich mir sicher, dass die Syntax falsch ist!
RewriteRule ^(.*)\.html$ /$1.php [L]
RewriteRule ^ https://www.google.de [R,L]
funktioniert einwandfrei.

Verfasst:
von

Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Verfasst: 30.04.2009, 14:10
von dahead
ich glaube, mit meinen /edits hab ich alle etwas verwirrt :)

jedenfalls habe ich ne Menge recherchiert und hab zu 1) eine Lösung gefunden

Code: Alles auswählen

Options -MultiViews
RewriteBase /
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /[^?\ ]+\.php
RewriteRule \.php$ - [F,NC,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .* $0.php [L,NC]

Verfasst: 30.04.2009, 16:43
von Kristian
Hallo

Falls du glaubst du habest alle mit deinem ersten Posting verwirrt kann das sein.
Bei dem was du gerade postest bin ich auf jeden Fall verwirrt.
Kannst du uns die Lösung erklären und noch viel wichtiger, was sie macht?

Gruß
Kristian

Verfasst:
von

Verfasst: 30.04.2009, 16:53
von dahead
Der Code oben entfernt in dem Fall die .php Dateiendung bei einem URL und verbietet den Zugriff auf die tatsächliche Datei.
Mag sich vielleicht komisch anhören aber mir gefällt ein URL wie example.de/kontakt besser als example.de/kontakt.php

Verfasst: 30.04.2009, 17:20
von Kristian
Hallo

Im Haarspaltmodus sollte man erst die Rewrite-Engine erst einschalten, dann die Base festlegen.

Bei dem Teil:

Code: Alles auswählen

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /[^?\ ]+\.php
RewriteRule \.php$ - [F,NC,L] 
bewirkt die zweite Zeile, IMHO dass alles mit .php am Ende verboten ist, aber was soll die erste Zeile sagen?
Ich würde es so übersetzen:
Der Request muss am Anfang ein oder mehrere grosse Buchstaben enthalten, gefolgt von einem / und dann das was in der Zeichenklasse steht, also kein Fragezeichen oder Leerzeichen aber das mindestens einmal, danach noch .php
Das Fragezeichen macht für mich (hier unmaskiert) keinen Sinn. Maskiert gäbe es auch keinen, also was bewirkt ein Fragezeichen bei dieser Schreibweise in einer Zeichenklasse?

@mork
Hast du ne Idee?

Gruß
Kristian