web-dev-qa-db-fra.com

Passer des valeurs arabes dans les paramètres donne un% d'espaces

J'ai construit une . Htaccess URL propre, cette partie fonctionne parfaitement dans mon . Htaccess:

RewriteCond %{THE_REQUEST} /road.php\s [NC]
RewriteRule . نقفورالثانيفوكاس/ [R=301,L]
RewriteRule ^نقفورالثانيفوكاس/$ road.php [L]

Mais cette partie des paramètres crée des espaces dans ma navigation:

<?php
$tit = urlencode("نقفورالثاني-فوكاس");
$cap = urlencode("الطريق-للقمة");
?>
<a href = '<?php echo "road.php?title=$tit&caption=$cap" ; ?>'>

Choisir seulement road.php fonctionne:

http://www.nikephorosphokas.com/%D9%86%D9%82%D9%81%D9%88%D8%B1%D8%A7%D9%84%D8%AB%D8%A7%D9%86%D9%8A%D9%81%D9%88%D9%83%D8%A7%D8%B3/ 

(Le titre affiche très bien en arabe, donc cela fonctionne)

Mais avec les deux paramètres, il en résulte beaucoup d'espaces:

http://www.nikephorosphokas.com/%D9%86%D9%82%D9%81%D9%88%D8%B1%D8%A7%D9%84%D8%AB%D8%A7%D9%86%D9%8A%D9%81%D9%88%D9%83%D8%A7%D8%B3/%25D9%2586%25D9%2582%25D9%2581%25D9%2588%25D8%25B1%25D8%25A7%25D9%2584%25D8%25AB%25D8%25A7%25D9%2586%25D9%258A%25D9%2581%25D9%2588%25D9%2583%25D8%25A7%25D8%25B3/%25D8%25A7%25D9%2584%25D8%25B7%25D8%25B1%25D9%258A%25D9%2582%25D9%2584%25D9%2584%25D9%2582%25D9%2585%25D8%25A9/ 

(Ce n'est pas ce que je veux, donc ça ne marche pas)

Ceci est mon complet . Htaccess:

  RewriteCond %{THE_REQUEST} /road.php\s [NC]
  RewriteRule . نقفورالثانيفوكاس/ [R=301,L]
  RewriteRule ^نقفورالثانيفوكاس/$ road.php [L]

  RewriteCond %{THE_REQUEST} /road.php\?title=([^&\s]+)\s [NC]
  RewriteRule . نقفورالثانيفوكاس/%1/? [R=301,L]

  RewriteCond %{THE_REQUEST} /road.php\?title=([^&\s]+)&caption=([^&\s]+)\s [NC]
  RewriteRule . نقفورالثانيفوكاس/%1/%2/? [R=301,L]

  RewriteRule ^نقفورالثانيفوكاس/([^/]+)/$ road.php?title=$1 [L]
  RewriteRule ^نقفورالثانيفوكاس/([^/]+)/([^/]+)/$ road.php?title=$1&caption=$2 [L]


  RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
  RewriteRule ^ %1 [R,L]
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}.php -f
  RewriteRule ^(.*?)/?$ $1.php [L]

J'ai essayé d'ajouter rlendice ou rawurlencode, mais le résultat était le même.

2
petermanoukian

Je suis à peu près sûr que vous devez utiliser les adresses codées PunyCode dans le fichier .htaccess. Essayez de convertir les valeurs arabes en punycode avec un outil tel que celui-ci: http://www.punycoder.com/

Je l’ai fait de cette façon pour les adresses cyrilliques et cela a bien fonctionné.

1
iSS