4 votes

htaccess url rewrite to .php

J'ai l'url ci-dessous

http://www.***.org/aaddress.php?state=nm&office_id=852&office_name=CLOVIS&state_name=New%20Mexico

Je veux changer l'url ci-dessous

http://www.*****.org/aaddress-state-nm-office_id-852-office_name-CLOVIS-state_New%20Mexico.php

J'ai utilisé le code htaccess suivant

Options +FollowSymLinks
RewriteEngine on

RewriteRule aaddress-state-(.*)-office_id-(.*)-office_name-(.*)-state_name-(.*)\.php aaddress.php?state=$1&office_id=$2&office_name=$3&state_name=$4

Cela ne fonctionne pas, lorsque je clique sur écrire, l'adresse n'est pas convertie en page .php.

Mes liens à l'intérieur des pages sont le 1er lien et je veux le changer en lien .php.

1voto

shiplu.mokadd.im Points 28895

Utiliser ceci,

RewriteRule ^aaddress-state-([^-]+)-office_id-([^-]+)-office_name-([^-]+)-state_name-([^\.]+)\.php$ aaddress.php?state=$1&office_id=$2&office_name=$3&state_name=$4

^ y $ correspondra à l'url entière et [^-]+ correspondra à n'importe quoi, sauf si - est rencontrée. Et [^\.]+ correspondra à n'importe quoi, sauf si . est rencontrée.

Cela correspondra à aaddress-state-nm-office_id-852-office_name-CLOVIS-state_name-New Mexico.php Mais pas aaddress-state-nm-office_id-852-office_name-CLOVIS-state_New Mexico.php . Note les disparus name- partie en state_New Mexico dans l'URL ultérieur.

0voto

Narcis Radu Points 1558

Essayez ceci :

RewriteRule ^aaddress-state-(.*)-office_id-(.*)-office_name-(.*)-state_name-(.*)\.php aaddress.php?state=$1&office_id=$2&office_name=$3&state_name=$4 [QSA,L]

0voto

anubhava Points 172509

Il s'agit d'un solution générique basée sur la récursivité qui fonctionnent quelle que soit la longueur de votre chaîne de requête.

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /

RewriteRule ^aaddress\.php$ aaddress-%{QUERY_STRING} [L]

RewriteRule ^([^&]+)&([^&]+)(&.*)?$ $1-$2$3 [L]
RewriteRule ^([^&])& $1 [L]

RewriteRule ^([^=]+)=([^=]+)(=.*)?$ $1-$2$3 [L]
RewriteRule ^([^=])= $1 [L]

Cela redirigera en interne l'URL de votre exemple vers : /aaddress-state-nm-office_id-852-office_name-CLOVIS-state_name-New+Mexico en remplaçant chaque & y = de la chaîne de requête au trait d'union - .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X