Tengo una URL como esta:
http://example.com/category/title que proviene del enlace http://example.com/cview.php?url=title
Quiero crear paginación y ser como http://example.com/category/title/page/1 o http://example.com/category/title/1 esto viene de http://example.com/cview.php?url=title&pageno=1 .
He intentado esto en .htaccess sin éxito
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^category/([^/]*)$/([^/]+)/?$ /cview.php?url=$2&pageno=$1 [L]¿Alguien puede ayudar por favor?
RewriteRule ^category/([^/]*)$/([^/]+)/?$ /cview.php?url=$2&pageno=$1 [L]
Tiene un $ erróneo (anclaje de fin de cadena) en medio del patrón RewriteRule . También parece tener las referencias inversas $1 y $2 al revés. También está permitiendo una barra inclinada final opcional, pero sus URL de ejemplo no la usan. (Una barra inclinada opcional crea potencialmente un problema de contenido duplicado).
Si permite tanto /category/title/page/1 como /category/title/1 , entonces posiblemente esté creando un problema de contenido duplicado. ¿Presumiblemente solo está vinculando a uno de estos formatos de URL?
Dado que el número de página es un "número", tiene sentido simplemente hacer coincidir los números, en lugar de cualquier cosa; esto también ayuda a evitar conflictos con otras directivas.
No parece que necesite las condiciones (directivas RewriteCond ) que comprueban que la solicitud no se asigna a un archivo o directorio, ya que no esperaría que una solicitud del formulario /category/title/page/1 se asigne a un archivo o directorio de todos modos?
Pruebe lo siguiente en su lugar (sin las directivas RewriteCond ):
RewriteRule ^category/([^/]+)(?:/page)?/(\d+)$ /cview.php?url=$1&pageno=$2 [L] Esto coincide con /category/title/page/<num> y /category/title/<num> . El subpatrón opcional (?:/page) no captura, por lo que no estropea la numeración de las referencias anteriores.
Tenga en cuenta también que el orden de las reglas en .htaccess es importante para evitar conflictos.