web-dev-qa-db-fra.com

Règle de réécriture pour remplacer chaque% 20 de l'URL par un trait de soulignement

Je voudrais mes URL actuelles:

http://example.com/files/528/Rabba%20Ho%20-%20Falak%20Shabir%20Song.html

Pour avoir l'air plus propre comme ça:

http://example.com/files/528/Rabba_Ho_-_Falak_Shabir_Song.html

Ceci est mon fichier . Htaccess actuel:

RewriteRule ^category/([^/]*)/([^/]*)\.html$ /index.php?pid=$1&ht=$2 [L]
RewriteRule ^category/([^/]*)/([^/]*)/([^/]*)\.html$ /index.php?pid=$1&page=$2&ht=$3 [L]
RewriteRule ^category/([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /index.php?sort=$1&pid=$2&page=$3&ht=$4 [L]
RewriteRule ^filedownload/([^/]*)/([^/]*)/([^/]*)\.html$ /fileshow.php?pid=$1&id=$2&ht=$3 [L]

Comment le modifier pour réécrire les espaces codés et les traits de soulignement?

3
Marvel

Voici une question similaire sur StackOverflow: mod_rewrite: remplacer les traits de soulignement par des tirets

J'ai modifié la réponse pour remplacer les espaces (décodés% 20) par un trait de soulignement. Cela fonctionne en appliquant de manière récursive une règle de réécriture tant qu'il y a deux correspondances ou plus, puis une fois qu'il n'y en a plus qu'une, une règle de réécriture séparée effectue la redirection.

RewriteEngine     On
RewriteRule       ^(/?files/.*/[^/]*?)\s([^/]*?\s[^/]*)$ $1_$2 [N]
RewriteRule       ^(/?files/.*/[^/]*?)\s([^/\s]*)$       /$1_$2 [R=301]

Comme d'autres l'ont commenté, vous devez vous assurer que votre application attend des traits de soulignement dans le chemin d'URL et génère des URL comportant le trait de soulignement.

2
Stephen Ostermiller

D'abord désolé pour mon mauvais anglais. J'utilise ceci dans mes liens PHP apps:

<?php $theURL = "http://example.com/files/528/Rabba Ho - Falak Shabir Song.html"; ?>

<a href="<?= str_replace( " ", "_", $theURL ); ?>" target="_blank">
    Rabba Ho - Falak Shabir Song
</a>

EDIT: Désolé pour la dernière erreur, je modifie maintenant ...

Le code ci-dessus renvoie une URL telle que:

http://example.com/files/528/Rabba_Ho_-_Falak_Shabir_Song.html.
1
Studio Cincouno