php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > ASP, PERL, CGI, C und alles andere
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


ASP, PERL, CGI, C und alles andere Wolle ma net so sein. Obwohl Perl, ASP, C und TCL zu den minderwertigen Internet-Skriptsprachen zählen, dürfen ab sofort hierzu auch Fragen gestellt werden. ;)

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-04-2011, 10:19
sero
 Registrierter Benutzer
Links : Onlinestatus : sero ist offline
Registriert seit: Apr 2011
Beiträge: 8
sero befindet sich auf einem aufstrebenden Ast
Standard PHP to .htaccess

Geschätzte Community

Ich möchte seit längerem eine Weiterleitung aus PHP in .htaccess umbauen.
Leider gelingt es mir überhaupt nicht.

Der funktionierende PHP Code lautet:
PHP-Code:
if( strpos($_SERVER['HTTP_HOST'], "www.hallo") === false ){
$lk = array_reverse(explode(".", $_SERVER['HTTP_HOST']));
header("Location: http://www.hallo.".$lk[0].$_SERVER['REQUEST_URI'],TRUE,301);
exit();
}


Ich habe drei Domain Namen:
example.landeskennung (.de .ch .at .com .us .cc .org .net usw...)
example1.landeskennung (.de .ch .at .com .us .cc .org .net usw...)
example2.landeskennung (.de .ch .at .com .us .cc .org .net usw...)

Wenn die Domain nicht www.example.landeskennung lautet, so soll auf die Domain www.example.landeskennung umgeleitet werden.
Jedoch soll die Landeskennung beibehalten werden.

BSP:
http://www.example1.de => http://www.example.de umleiten
http://www.example1.com => http://www.example.com umleiten
http://www.example1.ch => http://www.example.ch umleiten
usw... mit .at .info .net .org .cc .us usw...

zusätzlich soll immer das www vorne dran stehen...
http://example.de => http://www.example.de umleiten


Da es sehr viele Domains mit vielen Landeskennungen sind kann ich nicht einfach alle abfragen so quasi ein switch machen.

Es soll als die $lk = array_reverse(explode(".", $_SERVER['HTTP_HOST'])); in .htaccess umgeschrieben werden.

Ich habe es bereits damt versucht:
PHP-Code:
HcgiPhpProfileName php5 example
RewriteCond 
%{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www.example  [OR]
RewriteCond %{HTTP_HOST} ^example1  [OR]
RewriteCond %{HTTP_HOST} ^example2
RewriteRule 
(.*) http://www.example/$1 [R=301,L]
RewriteEngine On
RewriteBase 
/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond 
%{REQUEST_FILENAME} !-d
RewriteCond 
%{REQUEST_FILENAME} !-l
RewriteRule 
.* index.php [L
Für Vorschläge und Hinweise bin ich sehr dankbar
Mit besten Grüssen aus Zürich
Roger

Geändert von sero (14-04-2011 um 10:58 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 14-04-2011, 10:22
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Bitte erst mal Posting in dieser Hinsicht anpassen: http://www.php-resource.de/forum/php...ts.html#domain

Und dann beschreibe bitte, was du bereits probiert hast.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 14-04-2011, 10:59
sero
 Registrierter Benutzer
Links : Onlinestatus : sero ist offline
Registriert seit: Apr 2011
Beiträge: 8
sero befindet sich auf einem aufstrebenden Ast
Standard

Danke für den Hinweis: Umgesetzt
Mit Zitat antworten
  #4 (permalink)  
Alt 14-04-2011, 12:38
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

bei den RewriteConds gibt man sowieso reguläre Ausdrücke an, also kann man die Alternativen auch gleich als z. B. (www\.)?example(\d?)\.(com|net|org) in einem Pattern zusammenfassen.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 14-04-2011, 23:22
sero
 Registrierter Benutzer
Links : Onlinestatus : sero ist offline
Registriert seit: Apr 2011
Beiträge: 8
sero befindet sich auf einem aufstrebenden Ast
Standard

Herzlichen Dank für deine Antwort Amica

Dein Input ist sehr wertvoll.
Leider habe ich es noch nicht zum laufen gebracht.
Dies ist mein Code:
Code:
HcgiPhpProfileName php5 test
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?example(\d?)\.(com|de|at|ch|eu|co.uk|asia|net|org|cc|us|asia|biz|li|mobi|info)$
RewriteRule ^(.*)$ http://www.example/$1 [R=301,L] 
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php  [L]
Eine andere Variante welche leider auch nicht funktioniert ist:
Code:
HcgiPhpProfileName php5 test
RewriteEngine On

RewriteCond %{HTTP_HOST} !^(www.example.(com|de|at|ch|eu|co.uk|asia|net|org|cc|us|asia|biz|li|mobi|info))$
RewriteRule ^(.*)$ http://www.example/$1 [R=301,L]
Hast du oder sonst jemand eine Idee was ich falsch mache?
Beste Grüsse
Roger

Geändert von AmicaNoctis (14-04-2011 um 23:44 Uhr) Grund: PHP-Tags in Code-Tags geändert, da sonst Backslashes verschluckt werden
Mit Zitat antworten
  #6 (permalink)  
Alt 14-04-2011, 23:35
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Alle möglichen ccTLD einzeln aufzuführen, erscheint mir ziemlich überflüssig, wenn du den gleichen Wert eh wieder anhängen willst.
Da würde ich eher auf ([a-z]+) hinter dem Punkt matchen lassen, und das dann wieder hinter dem example anfügen.

Zitat:
PHP-Code:
RewriteRule ^(.*)$ http://www.example/$1 [R=301,L] 
Jetzt hast du die Endung ganz unter den Tisch fallen lassen - www.example ist sicherlich nicht deine Domain.

Außerdem musst du schon auf das, was du beim HTTP_HOST zu matchen versucht, in der Ersetzung Bezug nehmen, wenn du dort die Endung wieder anfügen willst.
Dazu müsstest du aber erst mal eine positive RewriteCond formulieren - denn wenn du dort nur verlangst, dass der Host einem bestimmten Muster nicht entsprechen soll, gibt es anschließend logischerweise auch keine Treffer, auf die du dich beziehen könntest.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 15-04-2011, 13:55
sero
 Registrierter Benutzer
Links : Onlinestatus : sero ist offline
Registriert seit: Apr 2011
Beiträge: 8
sero befindet sich auf einem aufstrebenden Ast
Standard

@wahsaga

ganz herzlichen Dank für deinen Vorschlag.

Ich habe mal weiter getestet:
PHP-Code:
RewriteCond %{HTTP_HOST} !^www.example$ [NC]
RewriteRule ^(.*)$ http://www.example$1 [R=301,L] 
Die Überlegung ist, alles was hinter example, wie von dir Vorgeschlagen, steht an die Weitergeleitete URL anzuhängen...
Das funktioniert teils:
- w_ww.example.at/de/home/? wird zu w_ww.examplede/home/? auch hier fehlt wieder die Landeskennung
- example.at/de/home/? wird zu w_ww.examplede/home/? auch hier fehlt wieder die Landeskennung aber das www wird richtig angehängt.

Ein weiterer Test:
PHP-Code:
RewriteCond %{HTTP_HOST} !^www.example.([a-z]+)$ [NC]
RewriteRule ^(.*)$ http://www.example%1/$1 [R=301,L] 
Leider ist auch hier %1 ... %3 leer...
Irgendwie fehlt da einfach ein Detail.

Für weitere Inputs bin ich sehr dankbar.
Grüsse Roger

Geändert von sero (15-04-2011 um 14:44 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 15-04-2011, 14:02
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Du hast immer noch ein Ausrufezeichen vor dem Ausdruck. Wahsaga schrieb bereits, dass du damit nur Domains matcht, die nicht dem regulären Ausdruck entsprechen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #9 (permalink)  
Alt 15-04-2011, 14:19
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Btw., du verlinkst immer noch Domains, die dafür nicht vorgesehen sind. example.com/.net/.org sind vorgesehene Beispieldomains, nicht example plus beliebige TLD.
Deaktivere doch bitte wenigstens die automatische Link-Umwandlung, wenn du solche Beispiele postest.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #10 (permalink)  
Alt 15-04-2011, 14:39
sero
 Registrierter Benutzer
Links : Onlinestatus : sero ist offline
Registriert seit: Apr 2011
Beiträge: 8
sero befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
die nicht dem regulären Ausdruck entsprechen.
Der Teil ist schon richtig so, denn im richtigen Case wird die Rule angewendet. Nur die Landeskennung wird nicht kopiert.

Trotzdem Danke für den Hinweis
Mit Zitat antworten
  #11 (permalink)  
Alt 15-04-2011, 14:46
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sero Beitrag anzeigen
Der Teil ist schon richtig so, denn im richtigen Case wird die Rule angewendet. Nur die Landeskennung wird nicht kopiert.
Du hast es immer noch nicht verstanden:

Ja, es mag sein, dass die RewriteCond in so fern „richtig“ ist, dass die nachfolgende RewriteRule nur dann angewendet wird, wenn der Hostname nicht dem Muster ^www.example.([a-z]+)$ entspricht.

Allerdings gibt es in diesem Fall dann auch keine back reference, die eine per ([a-z]+) gematchte Länderkennung enthalten würde - weil die Bedingung ja gerade verlangt, dass das Suchmuster nicht gefunden wurde.

Du kannst dich nicht in der RewriteRule auf etwas beziehen, von dem du in der RewriteCond verlangst, dass es bitte nicht vorhanden sein soll.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #12 (permalink)  
Alt 15-04-2011, 14:46
sero
 Registrierter Benutzer
Links : Onlinestatus : sero ist offline
Registriert seit: Apr 2011
Beiträge: 8
sero befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Btw., Deaktivere doch bitte wenigstens die automatische Link-Umwandlung, wenn du solche Beispiele postest.
Das Männchen in der Maschine macht die automatisch hin, auch wenn ich die Links entferne...
Habe nun w_ww. eingefügt, so gehts...
Mit Zitat antworten
  #13 (permalink)  
Alt 15-04-2011, 14:50
sero
 Registrierter Benutzer
Links : Onlinestatus : sero ist offline
Registriert seit: Apr 2011
Beiträge: 8
sero befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Du kannst dich nicht in der RewriteRule auf etwas beziehen, von dem du in der RewriteCond verlangst, dass es bitte nicht vorhanden sein soll.
Ah, das macht natürlich Sinn...
Also andere Strategie anwenden ohne !

Dann hat natürlich auch Amica Recht...
Mit Zitat antworten
  #14 (permalink)  
Alt 15-04-2011, 15:00
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sero Beitrag anzeigen
Das Männchen in der Maschine macht die automatisch hin, auch wenn ich die Links entferne...
Das Männchen in der Maschine lässt sich durch die Checkbox
[ ] Links automatisch umwandeln
unter dem Beitragsformular sagen, was es machen soll.

Wenn du allerdings einen Beitrag editierst, in dem schon die [URL]-Tags drin stehen, weil du beim ersten Mal vergessen hast, dem Männchen deinen Wunsch nach Nichtverlinkung mitzuteilen - dann musst du die selber wieder entfernen, bevor du das wieder abspeicherst. (Und die Checkbox über „erweitert“ auch wieder deaktivieren.)

__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #15 (permalink)  
Alt 16-04-2011, 16:36
sero
 Registrierter Benutzer
Links : Onlinestatus : sero ist offline
Registriert seit: Apr 2011
Beiträge: 8
sero befindet sich auf einem aufstrebenden Ast
Standard Lösung des Problems

Die Lösung des Problems lautet:

PHP-Code:
RewriteCond %{HTTP_HOST} ^www.(example1|example2).([a-z]+)$ [NC]
RewriteRule ^(.*)$ http://www.example.%2/$1 [R=301,L] 
Ganz herzlichen Dank an Amica und wahsaga für eure Hilfe und auch an die Community.

Besten Dank
Roger
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
htaccess x-blaster Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 2 05-12-2004 10:33
htaccess messwell Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 13 12-06-2004 08:30
.htaccess Wotan Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 4 05-11-2002 23:17
.htaccess okoman ASP, PERL, CGI, C und alles andere 2 05-11-2002 11:56
htaccess TBT PHP Developer Forum 3 16-10-2002 21:19

Themen-Optionen
Thema bewerten
Thema bewerten:

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.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:15 Uhr.