Domanda

Ho inviato un simile domanda qui . Tuttavia, questo era più su come ottenere consigli su cosa fare. Ora che so cosa fare, sto cercando un piccolo aiuto su come farlo!

In pratica ho un sito web che è dinamica praticamente al 100%. Tutti i link di siti web sono generati utilizzando PHP e tutte le pagine sono costituite da php include / code. Sto cercando di migliorare la SEO del sito, migliorando gli URL (come indicato in altra questione) e sto lottando un po '.

Sto usando mod_rewrite di riscrivere gli URL belle al brutto gli URL sul server. Così che cosa ho bisogno è quello di convertire ora le brutte URL (che vengono generati dal codice PHP nelle pagine) per gli URL più belli.

Qui ci sono gli URL che ho bisogno di analizzare (questi sono in altra questione lontato):

/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

Ecco quello che voglio gli URL di cui sopra per essere analizzati a:

/ModuleType
/ModuleType/CategoryName
/ModuleType/CategoryName/ProductName
/PageType
/PageType/Detail

C'è un esempio d'altra domanda pubblicato da Gumbo però mi è sembrato un po 'confuso e poco chiaro su esattamente quello che stava facendo.

Qualcuno potrebbe aiutarmi a risolvere questo problema?

Grazie in anticipo.

È stato utile?

Soluzione

Credo di capire quello che stai dopo ... Hai fatto tutta la riscrittura degli URL, ma tutti i collegamenti tra le pagine si utilizza la vecchia sintassi URL.

L'unico modo che posso vedere intorno a questo è di fare qualche tipo di ricerca e sostituzione regex sui link in modo da utilizzare la nuova sintassi. Questo sarà un po 'più complicato, se tutti i collegamenti sono generati in modo dinamico, ma si spera che non ci sarà troppo di questo da fare.

Senza vedere come i vostri collegamenti sono generati in questo momento, è difficile dire come cambiare il codice. Immagino che funziona in questo modo però:

<?php echo "<a href='/index.php?m=$ModuleType&categoryID=$id'>"; ?>

Quindi devi cambiare questo:

<?php echo "<a href='$ModuleType/$id'>"; ?>

Scusate se ho fatto errori nella sintassi, appena fuori dalla parte superiore della mia testa ...

Altri suggerimenti

A meno che non ho frainteso la tua domanda, non si analizza gli URL "brutto", lo script PHP viene chiamato con loro, in modo da $_GET[] i parametri (m, IDCategoria, ProductID) e si combinano loro di fare le tue belle URL, che non dovrebbe essere troppo difficile (solo un po 'di logica per vedere se un parametro è lì e concatenare le stringhe).

Avrete bisogno di un front controller, che inviare l'URL della pagina corretta.

  1. Apache riscrivere l'URL utilizzando le regole in .htaccess, in modo che qualsiasi cosa scritta verrà reindirizzato a index.php? Q =. Ad esempio, digitando http://example.com/i/am/here si tradurrà in una chiamata a index.php? q = / i / am / qui
  2. Index.php analizzerà il percorso da $ _GET [ "q"] e decidere cosa fare. Ad esempio, può includere una pagina, o andare al database, cercare il percorso fino, ottenere il contenuto appropriato e stamparlo

Se si vuole un esempio di lavoro di un .htaccess che fare esattamente questo (reindirizzare a index.php con q = percorso?) Dare un'occhiata a come Drupal fa:

http://cvs.drupal.org/ viewvc.py/drupal/drupal/.htaccess?revision=1.104

Come ha scritto Palantir questo viene fatto utilizzando mod_rewrite e .htaccess. Per ottenere le condizioni di riscrittura corrette nel tuo .htaccess si potrebbe desiderare di dare un'occhiata a una riscrittura generatore Mod (ad esempio, http://www.generateit.net/mod-rewrite/ ). Rende molto più facile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top