Sie können in Ihrer /.htaccess
Datei die folgende verwenden:
RewriteEngine On
# Replace underscores with hyphens, set the environment variable,
# and restart the rewriting process. This essentially loops
# until all underscores have been converted to hyphens.
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=underscore:yes,N]
# Then, once that is done, check if the underscore variable has
# been set and, if so, redirect to the new URI. This process ensures
# that the URI is rewritten in a loop *internally* so as to avoid
# multiple browser redirects.
RewriteCond %{ENV:underscore} yes
RewriteRule (.*) /$1 [R=302,L]
Dann fügen Sie Ihre Regel danach:
RewriteRule ^music-(.+)-(\d+).html$ /artiste.php?g=$1&page=$2 [NC,L]
Wenn dies für Sie arbeitet, und Sie möchten, dass die machen Weiterleitungen, die von Browsern und Suchmaschinen zwischengespeichert werden, ändern Sie 302
zu 301
.
Hinweis: In Ihrem RewriteRule
ich .*
-.+
geändert habe, so dass nur sie paßt eine oder mehr Zeichen, statt null oder mehr Zeichen. Zusätzlich habe ich [0-9_]+
zu \d+
geändert, das die Abkürzung entspricht, ohne Unterstreichungen einzuschließen, die sowieso in Bindestriche umgewandelt würden. Wenn Sie in die letzte Erfassungsgruppe Bindestriche einfügen möchten, ändern Sie (\d+)
in ([\d-]+)
.
Das Problem dabei ist, dass der Browser mehrere Male umleiten müsste, bis alle Unterstriche verschwunden sind. Besser, die Konvertierung intern zu machen. –