URLs parsing usando PHP
-
19-09-2019 - |
Pergunta
Eu postei uma pergunta semelhante aqui . No entanto, este foi mais sobre a obtenção de conselhos sobre o que fazer. Agora que eu sei o que fazer, estou à procura de um pouco de ajuda sobre como fazê-lo!
Basicamente, eu tenho um site que é muito bonito dinâmica de 100%. Todos os links do site são geradas usando PHP e todas as páginas são compostas de php inclui / code. Eu estou tentando melhorar o SEO do site, melhorando as URLs (como indicado na outra questão) e eu estou lutando um pouco.
Eu estou usando mod_rewrite de reescrever as URLs amigáveis ??para as URLs feias no servidor. Então, o que eu preciso é agora converter os urls feias (que são gerados a partir do código PHP nas páginas) com as urls mais agradáveis.
Aqui estão as URLs eu preciso analisar (estes estão no outro aswell pergunta):
/index.php?m=ModuleType
/index.php?m=ModuleType&categoryID=id
/index.php?m=ModuleType&categoryID=id&productID=id
/index.php?page=PageType
/index.php?page=PageType&detail=yes
Aqui está o que eu quero que os URLs acima para ser analisado para:
/ModuleType
/ModuleType/CategoryName
/ModuleType/CategoryName/ProductName
/PageType
/PageType/Detail
Há um exemplo na outra pergunta postada por Gumbo no entanto eu senti que era uma bagunça pouco e pouco claro sobre exatamente o que estava fazendo.
Alguém poderia me ajudar a resolver este problema?
Agradecemos antecipadamente.
Solução
Eu acho que ver o que você está depois ... Você já fez toda a reescrita de URL, mas todas as ligações entre as suas páginas estão usando a sintaxe URL de idade.
A única maneira que eu posso ver de contornar isso é fazer algum tipo de busca regex e substituir nos links assim que usam a nova sintaxe. Este será um pouco mais complicado se todos os links são gerados dinamicamente, mas espero que não haverá muito deste a fazer.
Sem ver como seus links são gerados no momento, é difícil dizer como alterar o código. Imagino que funciona mais ou menos assim que:
<?php echo "<a href='/index.php?m=$ModuleType&categoryID=$id'>"; ?>
Assim que você mudaria isso:
<?php echo "<a href='$ModuleType/$id'>"; ?>
Desculpe se eu fiz erros na sintaxe, apenas fora do topo da minha cabeça ...
Outras dicas
A não ser que eu não entendi sua pergunta, você não analisar os URLs "feios", o PHP script é chamado com eles, para que $_GET[]
seus parâmetros (m, CategoryId, ProductID) e combiná-los para fazer suas URLs agradáveis, que não deve ser muito difícil (basta um pouco de lógica para ver se um parâmetro está lá e concatenar as cordas).
Você vai precisar de um controlador de frente, que irá enviar a URL para a página correta.
- Apache irá reescrever o URL usando regras em .htaccess, de modo que qualquer coisa escrita será redirecionado para index.php? Q =. Por exemplo, digitar http://example.com/i/am/here irá resultar em uma chamada para index.php? q = / i / am / aqui
- Index.php irá analisar o caminho a partir de $ _GET [ "q"] e decidir o que fazer. Por exemplo, pode incluir uma página, ou ir para o banco de dados, procure o caminho para cima, pegue o conteúdo adequado e imprimi-lo
Se você quiser um exemplo de trabalho de um .htaccess que irá fazer exatamente isso (? Redirecionamento para index.php com q = caminho) dar uma olhada em como Drupal faz isso:
http://cvs.drupal.org/ viewvc.py/drupal/drupal/.htaccess?revision=1.104
Como Palantir escreveu isso é feito usando mod_rewrite e .htaccess. Para obter as condições de reescrita corretos em seu .htaccess que você pode querer dar uma olhada em um Rewrite Generator Mod (por exemplo, http://www.generateit.net/mod-rewrite/ ). Faz com que seja muito mais fácil.