| 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. ;) |
 |

14-04-2011, 10:19
|
|
sero
Registrierter Benutzer
|
|
Registriert seit: Apr 2011
Beiträge: 8
|
|
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)
|

14-04-2011, 10:22
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
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.
|

14-04-2011, 10:59
|
|
sero
Registrierter Benutzer
|
|
Registriert seit: Apr 2011
Beiträge: 8
|
|
Danke für den Hinweis: Umgesetzt
|

14-04-2011, 12:38
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
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! 
|

14-04-2011, 23:22
|
|
sero
Registrierter Benutzer
|
|
Registriert seit: Apr 2011
Beiträge: 8
|
|
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
|

14-04-2011, 23:35
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
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.
|

15-04-2011, 13:55
|
|
sero
Registrierter Benutzer
|
|
Registriert seit: Apr 2011
Beiträge: 8
|
|
@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)
|

15-04-2011, 14:02
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
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! 
|

15-04-2011, 14:19
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
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.
|

15-04-2011, 14:39
|
|
sero
Registrierter Benutzer
|
|
Registriert seit: Apr 2011
Beiträge: 8
|
|
Zitat:
Zitat von AmicaNoctis
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
|

15-04-2011, 14:46
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
Zitat:
Zitat von sero
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.
|

15-04-2011, 14:46
|
|
sero
Registrierter Benutzer
|
|
Registriert seit: Apr 2011
Beiträge: 8
|
|
Zitat:
Zitat von wahsaga
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...
|

15-04-2011, 14:50
|
|
sero
Registrierter Benutzer
|
|
Registriert seit: Apr 2011
Beiträge: 8
|
|
Zitat:
Zitat von wahsaga
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...
|

15-04-2011, 15:00
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
Zitat:
Zitat von sero
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.
|

16-04-2011, 16:36
|
|
sero
Registrierter Benutzer
|
|
Registriert seit: Apr 2011
Beiträge: 8
|
|
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
|
|
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 |
|
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|