Pesquisei muito no Google, mas não consigo encontrar a resposta certa, então estou fazendo uma pergunta aqui. É sobre htaccess e url para um site simples que estou construindo com código php. É assim que uma url se parece atualmente:
www.example.com/flowers-and-garden/white-flowers-in-spring
O que eu quero alcançar é um diretório extra para o nome do ano 2025
na url quando eu fizer um novo post. E quando eu postar no ano que vem, uma pasta para 2026
na url como esta:
www.example.com/flowers-and-garden/2025/white-flowers-in-spring
Fiz várias tentativas de alterar o código no arquivo htaccess, mas ele só me dá erros! Acho que não é só o código no htaccess que preciso alterar.
É assim que parte do código atual se parece no arquivo htaccess:
RewriteRule ^flowers-and-garden$ /?p=flowers-and-garden [L,QSA]
RewriteRule ^flowers-and-garden/(.+)$ /?p=post&id=$1 [L,QSA]
É assim que meu código fica atualmente quando alguém seleciona uma postagem:
Primeiro o pedido:
{
$request = ($_GET["id"]);
}
else
{
$request = "start";
}
Em seguida, verifique se a postagem solicitada corresponde post_path
ao nome na tabela do banco de dados, como este:
$sql = "SELECT * FROM " . DB_TABLE_POSTS . " WHERE post_path='{$request}' AND post_status = 1 LIMIT 1;";
Em vez de apenas verificar uma correspondência da postagem white-flowers-in-spring
na tabela, preciso verificar uma correspondência de2025/white-flowers-in-spring
Como devo verificar se uma postagem solicitada corresponde a uma postagem no diretório 2025 é o que preciso de ajuda e como reescrever o código em htaccess e php. Se algo não estiver claro na minha pergunta, pergunte-me! Obrigado antecipadamente!
.htaccess
ConfiguraçãoIsso reescreverá a URL para algo como:
?p=post&id=2025/white-flowers-in-spring
Código PHP
Agora
$request
será algo como:2025/white-flowers-in-spring
Consulta SQL usando instrução preparadaIsto é mais seguro e protege contra injeção de SQL. Opcional: Ano e Slug em Colunas Separadas
Avise-me se precisar de ajuda para redirecionar URLs antigas ou gerar links dinamicamente.