mod_rewrite Problematik (zb www erzwingen)

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Post Reply
HyteRaph
Posts: 44
Joined: Wed 20. Mar 2013, 15:35

mod_rewrite Problematik (zb www erzwingen)

Post by HyteRaph »

Hey, nach mittlerweise 4/5 Stunden bin ich einfach nur noch frustriert.

Ich möchte gerne erreichen, dass ein "www." erzwungen wird, HTTPS aktiviert wird und im Idealfall anstelle von url.de/index.php?alias einfach url.de/alias angezeigt wird.
Nun.. irgendwie bekomme ich es einfach nicht komplett.

für https:

Code: Select all

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}index.php?home_de
Tut soweit, was es soll. Das index.php?home_de muss ich dort setzen, da er sonst 404 auswirft. Sogar bei url.de/index.php wirft er mir ein 404 entgegen.. bei home_de.html anstelle index.php?home_de kommt eine kuriose Fehlerseite + 500
Gebe ich http://www.url.de ein, kommt zwar https://www.url.de raus, aber nur mit 404.... Wenn ich http://www.url.de/home_de.html eingebe, komme ich immerhin auf die Hauptseite.

Derzeit komme ich über jeden Link auf eine Adresse ohne www.
für www hatte ich mal:

Code: Select all

RewriteCond %{HTTP_HOST} !^www\.url\.de$
RewriteRule ^(.*)$ https://www.url.de/$1 [R=301]
Das will aber schon wieder nicht mehr. Die URLs addieren sich nach hinten auf und es läuft absolut nichts. Irgendwann im Laufe des Tages habe ich es mal hinbekommen.. Aktuell macht es mal wieder nichts außer wirr die URLs zu addieren.

für /alias

Code: Select all

RewriteRule ^(.+)\.html$ /index.php?$1
Immerhin funktioniert url.de/alias.html

Das .html wegzubekommen ist erstmal hinten angestellt, aber wie zum geier bekomme ich ohne probleme ein https://www.url.de hin?? Ich habe inzwischen einige Tuts zum Thema mod_rewrite gelesen und meine immerhin das System hinter "RewriteRule" zu verstehen. "RewriteCond" ist noch ein Kapitel, was sich mir nicht erschließt. Allerdings baue ich auch bei RewriteRule immer nur Fehler und zerballer mir die URLs komplett. Ich weiß langsam nicht mehr weiter und hoffe mir kann hier etwas weiter geholfen werden.


VG
Old Boy
Posts: 1203
Joined: Fri 23. Nov 2012, 13:52

Re: mod_rewrite Problematik (zb www erzwingen)

Post by Old Boy »

Aber das phpwcms eigene modrewrite hast du schon mal versucht?
HyteRaph
Posts: 44
Joined: Wed 20. Mar 2013, 15:35

Re: mod_rewrite Problematik (zb www erzwingen)

Post by HyteRaph »

Okey Oliver war so freundlich, mit mit dem "www" Problem zu helfen. Nun lande ich über url.de und http://www.url.de auf https://www.url.de. Das ist schonmal super.

Jedoch habe ich noch das große Problem, dass er mir auf https://www.url.de einen 404 raushaut.

Wie kann ich es regeln, dass ich beim ersten aufrufen von url.de bzw. http://www.url.de auf https://www.url.de/home_de.html leitet oder schönheitstechnisch das "home_de.html" in home_de ändern?
Die Regel von Oliver umfasst alle Links und daher kann ich in dieser Regeln das "home_de.html" nicht anhängen. Das ergäbe bei jedem linke die falsche Adresse im Sinne von "www.url.de/home_de.htmlalias".
Ich möchte, dass beim ersten Öffenen der Seite auf /home_de.html gelinkt wird. Oder wenigstens auf /index.php?home_de

Code: Select all

RewriteCond %{HTTP_HOST} ^www\.url\.de$
RewriteCond %{HTTP_HOST} ^url\.de$
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}home_de.html [R=301,L]
tut es ganz offensichtlich nicht...


//edit:
ICH HABS!! BOOYA!!! :) :) :)

Vor den Regeln zum https und www von Oliver (mit [L] Tag) habe ich nun:

Code: Select all

RewriteRule ^$ home_de.html
RewriteRule ^index.html$ home_de.html
gestellt. Nun tut die Seite erstmal das, was sie tun soll und muss. :) :) Jippi!

Falls noch jemand ähnliches vor hat bzw. ähnliche Probleme:

Code: Select all

# Erste Aufrufen und Index linken auf /home_de.html.... endlich
	RewriteRule ^$ home_de.html
	RewriteRule ^index.html$ home_de.html

# Jede Seite/Link erhaelt ein https://www...
	RewriteCond %{HTTP_HOST} !^$
	RewriteCond %{HTTP_HOST} !^www\. [NC]
	RewriteCond %{HTTPS}s ^on(s)|
	RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Ein weiterer Schritt wäre nun nur noch die .html Endungen zu verschleiern. Aber nach dem Nervensbrutzler für diese "vermeintlich simplen" Umformulierungen, muss ich erst mal Luft schnappen.. :) Falls jemand einen simplen Trick bzw. Link hat wäre ich natürlich nicht abgeneigt.

An dieser Stelle nochmal fetten Dank an Oliver für all die Mühe.
HyteRaph
Posts: 44
Joined: Wed 20. Mar 2013, 15:35

Re: mod_rewrite Problematik (zb www erzwingen)

Post by HyteRaph »

Hmm ich habe zwar die Möglichkeit die Endung wegzuschneiden gefunden... Allerdings läd sich der Browser dann ins Nirvana, ohne dass sich die Seite öffnet..

getestet habe ich:

Code: Select all

RewriteRule ^(.+)\.html$ /$1 [R=301]
und

Code: Select all

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.+)\.html\ HTTP/
RewriteRule (.*).html$ /$1 [R=301,L]
Beide cutten das .html weg, aber bei beiden Versionen läd die entsprechende Seite dann nicht mehr... Woran liegt das? Oder ist das Stoff für ein neues Topic?
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: mod_rewrite Problematik (zb www erzwingen)

Post by update »

In der conf statt
$phpwcms['rewrite_ext'] = '.html';
mal ein
$phpwcms['rewrite_ext'] = '';
(nur so ne Idee)
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
HyteRaph
Posts: 44
Joined: Wed 20. Mar 2013, 15:35

Re: mod_rewrite Problematik (zb www erzwingen)

Post by HyteRaph »

update wrote:In der conf statt
$phpwcms['rewrite_ext'] = '.html';
mal ein
$phpwcms['rewrite_ext'] = '';
(nur so ne Idee)
Gute Idee! Leider das selbe Ergebnis. Danke trotzdem!
Old Boy
Posts: 1203
Joined: Fri 23. Nov 2012, 13:52

Re: mod_rewrite Problematik (zb www erzwingen)

Post by Old Boy »

Ich frage mich allerdings die ganze Zeit, wieso jemand unbedingt das ".html" WEG haben will :?:
WOZU?

Ich wäre lieber MIT ".html" erreichbar ... als dass meine Site OHNE gar nicht mehr sauber funktionierte :D
HyteRaph
Posts: 44
Joined: Wed 20. Mar 2013, 15:35

Re: mod_rewrite Problematik (zb www erzwingen)

Post by HyteRaph »

Old Boy wrote: WOZU?
Sieht doch hübscher aus, oder findest du nicht? :D Es ist nicht zwingend nötig und inzwischen den Aufwand definitiv nicht mehr Wert, aber ich finde es sieht hübscher aus..
Old Boy wrote:... als dass meine Site OHNE gar nicht mehr sauber funktionierte :D
Wahre Worte ;-)


Ich habe gerade festgestellt, dass ich nicht mehr ins Backend komme mit den aktuellen Rewrite Regeln.... Oh Jemine. Hilfe!!
/login.php läd normal und sobald ich auf "Login" drücke, fängt er kurz an zu laden um dann wieder auf /login.php zu landen. Ohne jegliche Meldung! Erst dachte ich, ich hätte mein PW vergessen und habe das schon über phpmyadmin geändert, aber das ist es definitiv nicht. Es kommt ja wie gesagt gar keine Fehlermeldung - also schätze ich mal, dass da schon wieder was gewaltig schief läuft mit meinen RewriteRules.... :-/

Habe dazu mal einen eigenen Threat erstellt....

Code: Select all

# Rewrite:
<IfModule mod_rewrite.c>

	RewriteEngine On

	DirectoryIndex index.html index.php

	# Use RewriteBase - always start in Document Root
	RewriteBase /
	# If installed in a subfolder
	#RewriteBase /subfolder/


# Erste Aufrufen und Index linken auf /home_de.html.... endlich
	RewriteRule ^index.html$ home_de.html
	RewriteRule ^$ home_de.html


# Jede Seite/Link erhaelt ein https://www...
	RewriteCond %{HTTP_HOST} !^$
	RewriteCond %{HTTP_HOST} !^www\. [NC]
	RewriteCond %{HTTPS}s ^on(s)|
	RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


	# Ignore
	RewriteRule ^(include|img|template|picture|filearchive|content|robots\.txt|favicon\.ico)($|/) - [L]
	RewriteRule ^index\.php$ - [L]

	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule ^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.html$ ./index.php?id=$1,$2,$3,$4,$5,$6&%{QUERY_STRING}
	RewriteRule ^(.+)\.html$ ./index.php?$1&%{QUERY_STRING}

</IfModule>
Post Reply