2012-02-01 6 views
5

Quando si utilizza la riscrittura dell'URL per l'abbellimento, ci sono dubbi sull'opportunità di eseguire i calcoli del contenuto in uno script PHP o di codificarlo in modo rigido nel file .htaccess?Per la riscrittura degli URL, utilizzare .htaccess o PHP per determinare il contenuto utilizzato?

Per esempio, WP aggiunge la regola semplice per il file .htaccess

RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

che dirige tutto alla pagina index.php. Quindi ha uno script PHP (canonical.php) analizza $ _SERVER ['REQUEST_URI'] per poi capire quale contenuto deve effettivamente aprire.

Invece di usare PHP per gestire tutto questo, potrebbe essere inserita direttamente nel file .htaccess passando gli elementi di query dall'URL, simile a:

RewriteRule ^products/([0-9][0-9])/$ /productinfo.php?prodID=$1 

Qualcuno sa i vantaggi/svantaggi di i due metodi? Penso che il metodo PHP offra un po 'più di flessibilità, ma potrei sbagliarmi. Non ho idea di quale abbia più overhead però.

+0

A mio parere, le richieste di instradamento tramite un singolo script PHP consentono di intercettare richieste non valide e gestire l'errore in modo appropriato. Ad esempio, una pagina di errore personalizzata che dice che la pagina non è stata trovata, ma qui ci sono alcune pagine simili. –

+0

Questo è quello che stavo pensando. Sembra molto più facile usare lo script PHP per eseguire tutte le operazioni al volo. – edeneye

risposta

2

La mia opinione è che la gestione di PHP è molto meglio. L'unico svantaggio possibile è che potrebbe essere più lento, ma non così tanto, nel tempo complessivo di generazione della pagina non noterai alcuna differenza. Ma gli svantaggi sono:

  1. se il sito cresce, è necessario fornire nuove regole in .htaccess ogni volta, che non è conveniente. Se, ad esempio, si desidera aggiungere un ulteriore argomento GET ad alcune chiamate di script, è necessario modificare nuovamente le regole .
  2. non è comodo quando si passa da un host a un altro. in alcuni casi è necessario modificare la struttura della directory e tutte le regole, che dipendono da essa.
  3. se, per qualche motivo, decidete di spostare il vostro sito da Apache a nginx, IIS o ad altri server , avrete molti problemi a convertire le vostre regole . Htaccess in un altro formato server.

Quindi è decisamente meglio gestirli da PHP.

0

Il secondo metodo non è sicuramente un buon metodo. Dal momento che richiede di aggiungere una nuova regola a .htaccess ogni volta che vuoi una nuova sezione sul tuo sito.

Per esempio si potrebbe desiderare di aggiungere un nuovo category si deve aggiungere

RewriteRule ^categories/([\w-]+)/?$ categories.php 

Per le prestazioni/testa, penso che non c'è bisogno di micro cosa ottimizzare in questo modo. Nella maggior parte dei casi, quando si tratta di problemi di prestazioni, è sempre correlato a problemi di DB o I/O (a meno che nell'app non ci sia un codice veramente brutto che rallenti il ​​sito).

+0

Questo è quello che stavo pensando, e perché il metodo PHP sarebbe "migliore" dal punto di vista della facilità d'uso. Se ci fosse una significativa differenza di costi, dovrei considerare l'uno o l'altro. – edeneye

Problemi correlati