convertir URL original a URL amigable

En mi sitio web hay un enlace a tutores registrados. Ese enlace es algo como esto

http://www.myweb.com/profiles/tutors/index.php?tutorCode=1285&tutorName=Robert%20Sakoo&city=Sidny

Entonces necesito reescribir este enlace algo como esto:

 www.myweb.com/1285/Rober Sakoo 

¿Alguien puede decirme si es posible volver a escribir sobre la URL original en mi URL esperada?

Parece confundirse con el funcionamiento de las URL y la reescritura. La noción de que “Necesito reescribir this2 a this1 significa:

  1. Alguien ingresa this2 en su barra de direcciones o hace clic en un enlace this2 .
  2. El servidor ve una solicitud para this2
  3. El servidor tiene un conjunto de reglas para reescribir internamente la solicitud de this2 a this1
  4. this1 se sirve para el navegador

Tenga en cuenta que el concepto importante en todo esto es que el navegador solicita el enlace “this2” y el servidor reescribe internamente la solicitud a “this1” . Pero probablemente esto no es lo que quieres en absoluto, porque entonces estarías tomando las feas URL y reescribiéndolas en las bonitas URLs, algo así como perder el sentido de las URL amigables.

Con demasiada frecuencia, especialmente por aquí, las personas piden cosas como “Quiero cambiar esta URL a esta url”, o solicitando una reescritura cuando hay un proceso de redirección de 2 pasos. Este es el segundo paso (que no está pidiendo en absoluto) que toma this1 y redirecciona el navegador a this2 para que la barra de direcciones de la URL cambie a this2 :

  1. Alguien ingresa this1 en su barra de direcciones o hace clic en un enlace this1 .
  2. El servidor ve una solicitud para this1
  3. El servidor tiene un conjunto de reglas para redirigir externamente el navegador a this2 .
  4. La barra de direcciones del navegador dice ahora esto2
  5. El navegador solicita this2
  6. El servidor ve una solicitud para this2
  7. El servidor tiene un conjunto de reglas para reescribir internamente la solicitud de this2 a this1
  8. this1 se sirve para el navegador

Así que toda esta convolución es así cuando el navegador intenta ir a this1 , se redirecciona a this2 pero todavía se sirve el contenido de this1 .

Así que supongo que esto debe ser lo que quieres. Trate de poner esto en su archivo htaccess:

 RewriteEngine On # check if the actual request if for "this1" RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /profiles/tutors/index.php\?tutorCode=([0-9]+)&tutorName=([^&]+)&?([^\ ]+) # redirect to "this2" RewriteRule ^profiles/tutors/index\.php /%1/%2/?%3 [R=301,L,NE] # now rewrite "this2" back to "this1" RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9]+)/(.+)/$ /profiles/tutors/index.php?tutorCode=$1&tutorName=$2 [L,QSA] 

Tenga en cuenta que el parámetro city nunca se codifica en la URL amigable, por lo que se deja como parte de la cadena de consulta. Puede cambiar esto para que la URL amigable se vea como: /id/name/city/ lugar de solo /id/name/ , esa modificación debe ser trivial.

Eso estaría cerca:

 RewriteEngine on RewriteRule ^([0-9]+)/(.+)$ /profiles/tutors/index.php?tutorCode=$1&tutorName=$2 [NC,QSA] 

Como no está especificando qué hacer al respecto, no tomé en cuenta el parámetro de su city , por lo tanto, agregué QSA (Query String Append) a la regla, por lo que los parámetros en GET aún se transmiten al script.