Tengo un blog HTML/CSS/PHP puro. La estructura es simple. La página principal es domain.com/blog (últimas publicaciones) y domain.com/blog?page=2 (para publicaciones en la página 2, etc.). Esa página está controlada por el archivo blog.php. Si el usuario quiere leer una publicación, por ejemplo, "Cómo-aprender-pulir", va a domain.com/blog_post?name=How-to-learn-polish y esto también funciona.
Mi problema es cómo escribir una regla en htaccess para cargar el contenido de la página domain.com/blog_post?name=How-to-learn-polish en url domain.com/blog/How-to-learn-polish
Busqué en Internet una solución para mi problema y creé esa regla
RewriteEngine On RewriteRule ^blog/([^/]*)$ blog_post.php?name=$1 [L,NC] Esta regla funciona bien en un 80 % porque redirige de domain.com/blog/How-to-learn-polish a domain.com/blog_post?name=How-to-learn-polish
No quiero redirigir pero cargar la publicación en esta URL domain.com/blog/How-to-learn-polish
¿Qué debo cambiar en mi htaccess para hacer eso? Lleno de mi htaccess se ve así
Header set Cache-Control "max-age=31536000, public" RewriteEngine On RewriteRule ^blog/([^/]*)$ blog_post.php?name=$1 [L,NC] RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] RewriteBase / RewriteRule ^(.+)\.php$ /$1 [R,L] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*?)/?$ /$1.php [NC,END]Sus reglas necesitan reordenarse:
Header set Cache-Control "max-age=31536000, public" RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301,NE] RewriteRule ^(.+)\.php$ /$1 [R=301,NC,L] RewriteRule ^blog/([^/]+)/?$ blog_post.php?name=$1 [END,NC,QSA] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*?)/?$ /$1.php [END]Asegúrese de usar un navegador diferente o elimine los datos de la memoria caché de su navegador para probar esta regla y evitar la memoria caché antigua.