Mod_Rewrite Leerzeichen Umwandeln => "-"

Fabian17

Fabian23
ID: 304783
L
18 Mai 2007
1.674
105
Hi,

Habe mal eine Frage bzgl des Mod Rewrites,

undzwar gebe ich auf meiner Seite die Verlinkungen im Forum mit dem Titel über (Klingt komisch ich weiß -.-)

Naja ich meine:

Forum => Allgemeines => Fun Ecke

Also halt noch den Link Namen im Link oO
Weiß grade nicht wie man das besser beschreiben soll,

Ich gebe halt die Überschrift mit in der Url an, nur werden dann ja halt eben auch die Leerzeichen "Fun Ecke" mit übergeben, was ja nicht gut ist, wird halt abgeschnitten in Foren zb, Messenger wie icq, etc...

Meine Bisherige Mod_Rewrite schaut folgendermaßen aus:

Code:
RewriteRule forum,(.*)\.htm$ index2.php?site=forum&board=$1  [L]

Und hinter dem htm soll dann halt die Überschrift integriert sein, nur halt ohne die Leerzeichen die sollten "-" sein

wie zb: www.meineseite.de/forum,21.htm#Fun-Ecke/

Hat jemand da einen Vorschlag? bzw einen Tipp,
ihr habt mir ja schon damals fleißig geholfen ;) daher nocheinmal DANKE

Grüße,
Fabian
 
Code:
RewriteRule forum,(.*)\.htm$ index2.php?site=forum&board=$1  [L]
Und hinter dem htm soll dann halt die Überschrift integriert sein, nur halt ohne die Leerzeichen die sollten "-" sein

wie zb: www.meineseite.de/forum,21.htm#Fun-Ecke/

Die Links generierst du ja nicht mit Mod_Rewrite.

Das müsstest du dann in deinem Script anpassen, was die Urls generiert. Leerzeichen durch "-" ersetzen. Wobei ich persönlich ein "_" bevorzuge, damit keine Verwirrung bzgl. zusammengesetzten Wörtern mit Bindestrich entstehen.

Wenn ich dich richtig verstanden habe, müsste deine rewrite ruleallerdings so ausschauen:

Code:
RewriteRule forum,(.*)\.htm[COLOR=Red]\#(.*)[/COLOR]$ index2.php?site=forum&board=$1  [L]
 
Wenn ich mich recht entsinne, wird man den Hash gar nicht mit mod_rewrite verwenden können, da dieser im Allgemeinen gar nicht an den Server geschickt wird - schliesslich wird er einzig und allein im Browser gebraucht.
 
Die Links generierst du ja nicht mit Mod_Rewrite.

Das müsstest du dann in deinem Script anpassen, was die Urls generiert. Leerzeichen durch "-" ersetzen. Wobei ich persönlich ein "_" bevorzuge, damit keine Verwirrung bzgl. zusammengesetzten Wörtern mit Bindestrich entstehen.

Wenn ich dich richtig verstanden habe, müsste deine rewrite ruleallerdings so ausschauen:

Code:
RewriteRule forum,(.*)\.htm[COLOR=Red]\#(.*)[/COLOR]$ index2.php?site=forum&board=$1  [L]

Hi, habe diese Rule mal getestet und erhalte einen 501er Error,
:( Liegt vermutlich an dem # In der Regel (Meine Vermutung)

Den Link erzeuge ich folgendermaßen:

Code:
$boardname ='• <a href="forum,'.$board.'.htm#'.$boardname.'"><b>'.$boardname.'</b></a>';

Wobei $board die Forums ID ist, und boardname die Überschrift die ich halt hinter die Url mit "dranklatsche" #$boardname,

Ich melde mich später nocheinmal genauer, da ich jetzt kurz weg muss

Danke aber schonmal für die ersten Antworten hier ;)
 
Code:
$boardname ='• <a href="forum,'.$board.'.htm#'.$boardname.'"><b>'.$boardname.'</b></a>';


Code:
$boardname ='• <a href="forum,'.$board.'.htm#'.[COLOR=#000000][URL="https://de.php.net/str_replace"][COLOR=#0000BB]str_replace[/COLOR][/URL][COLOR=#007700](" ", "_",[/COLOR][/COLOR]$boardname).'"><b>'.$boardname.'</b></a>';
 
Code:
$boardname ='• <a href="forum,'.$board.'.htm#'.[COLOR=#000000][URL="https://de.php.net/str_replace"][COLOR=#0000BB]str_replace[/COLOR][/URL][COLOR=#007700](" ", "_",[/COLOR][/COLOR]$boardname).'"><b>'.$boardname.'</b></a>';

Besten dank :), das klappt 1A :)

Hier im Non Lose Bereich, wird einem noch geholfen ;)
 
Wenn ich nochmal fragen dürfte ;)

PHP:
$link='<a href="thema,'.$dt['topicID'].'-'.str_replace
(" ", "_",$topictitle).'.htm"><b>'.$topictitle.'</b></a>';

Wie erweiter ich die str_replace Funktion um eine weitere Variable?

zb das " " und "?" "!" etc ebenfalls in "_" umgewandelt werden?

Das habe ich bereits probiert, was leider nicht geklappt hat :/
PHP:
$link='<a href="thema,'.$dt['topicID'].'-'.str_replace
(" ", "_",$topictitle,str_replace"?", "_").'.htm"><b>
'.$topictitle.'</b></a>';

Oder ist das nicht möglich?

Gruß,
Fabi
 
str_replace() nimmt als ersten Parameter auch ein Array, dadurch sieht das Ganze dann folgendermassen aus:
PHP:
$link='<a href="thema,'.$dt['topicID'].'-'.str_replace(array(' ', '?', '!'), "_",$topictitle).'.htm"><b>'.$topictitle.'</b></a>';
 
Nochmal ich... (Falls ich mit diesem Thema Nerve)

Ich dachte mir, bauste mal eben die Funktion auch in die Links ein (nicht im php code (html Template))

tja da hab ich falsch gedacht :/, geht nicht :(

Müsste ich dort mod_rewrite anwenden?

PHP:
Original:
<a href="thema,$topic.htm"><b>$topicname</b></a>

Meine Version:
<a href="thema,$topic-$topicname.htm"><b>$topicname</b></a>
Ich erhalte: seite.de/thema,72-Kuriose%20und%20Lustige%20Bilder.htm

Ich will:
seite.de/thema,72-Kuriose_und_Lustige_Bilder.htm

Meine Vermutung, Hier benötige ich mein "Mod_Rewrite" sehe ich das richtig? oder ließe siche die str_replace Funktion dementsprechend umschreiben was ich aber nicht vermute, da die Funktion für php ausgelegt ist liege ich das richtig?

Beste Grüße,
Fabi
 
Zuletzt bearbeitet:
%20 == Leerzeichen

Probier doch einfach mal, ein str_replace nach %20 bzw. " " durch _ ersetzen:p

PHP:
thema,'.$dt['topicID'].'-'.str_replace(array(' ', '?', '/'), "_",$topictitle).'.htm

Das ist die str_replace Funktion im php script,

und mit

PHP:
str_replace(array(' ', '%20', '?', '/'), "_",$topictitle)
Im Link klappt das auch nicht :/
 
Soo, auch das Problem konnte geklärt werden ;)

1 Problem hätte ich dann aber noch... (ist wirklich das letzte :mrgreen:)

Undzwar:

Ich habe ja die schicken Statischen Urls in der Form

benutzer,X.htm die aus index.php?seite=user&id=X stammen

Und nun möchte ich erreichen das wenn der User www.meineseite.de/index.php?seite=user&id=X eingibt automatisch auf www.meineseite.de/benutzer,X.htm kommt ;) was ja auch für sumas gut ist

Ich wollte das mit einer 301er Weiterleitung machen, die jedoch nicht geklappt hat :/

Durch ein wenig Googlen bin ich auf folgedens gestoßen:

Dynamische URL umleiten Variante 5
Aus seite.php?id=1234 soll https://www.domain.at/seite-1234.html werden, gleichzeitig soll bei Aufruf der dynamischen Seite seite.php?id=1234 diese auf seite-1234.html per 301 umgeleitet werden:

PHP:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$ 
RewriteRule ^(.*) https://www.domain.at/seite-%1.html? [L,R=301] 
RewriteRule ^artikel([0-9]+).html$ /seite.php?id=$1&umgeleitet=ja

Worauf ich leider nicht schlau geworden bin :/

Über eine Hilfestellung wäre ich durchaus dankbar ;)

Gruß & danke im Vorraus,
Fabian
 
*push*

Die Frage ist, wie ich index.php?seite=user&ID=2 auf benutzer,2.htm umleite,

Die Url erzeuge ich mittels htacess RewriteRule

Nur wie leite ich diese per 301er um?, da Google sowohl die mit index & benutzer,2.htm im Cache hat, was ja nicht gut ist


Bin um jede Hilfe dankbar

Beste Grüße,
Fabian
 
Code:
RewriteEngine On
#wenn lquery string id enthält und noch nicht umgeleitet wurde, leite um
RewriteCond %{QUERY_STRING} &id=([0-9]+)$ [NC]
RewriteCond %{REQUEST_URI} !\/benutzer,(.*)\.html$ [NC] 
RewriteRule ^(.*) https://www.meineseite.de/benutzer,%1\.html [QSA,R=301,L]  

# alles andere
RewriteRule forum,(.*)\.htm$ index2.php?site=forum&board=$1  [L]

Könnte so funktionieren, ungetestet und schon lang nix mehr damit gemacht.