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.

Foi útil?

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.

  1. 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
  2. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top