Come impostare un reindirizzamento a un altro URL in PHP prima che la pagina venga caricata? Reindirizzamento php Euroleague men ucp

6,1K

Supponiamo che tu voglia visualizzare la pagina https://example.com/final.php agli utenti che accedono alla pagina https://example.com/initial.php. Questo può essere fatto con pochi Metodi PHP, JavaScript e HTML. In questo articolo tratteremo ciascuno dei metodi che puoi utilizzare per reindirizzare PHP su un'altra pagina.

Ecco alcune variabili che utilizzeremo:

Utilizzando la funzione PHP header() per reindirizzare un URL

Se desideri aggiungere un reindirizzamento da partial.php a final.php , puoi inserire il seguente codice nella pagina web individual.php. Invia una nuova intestazione di posizione al browser:

Qui utilizziamo la funzione PHP header() per creare il reindirizzamento. È necessario inserire questo codice prima di qualsiasi codice HTML o testo. Altrimenti riceverai un errore che ti informa che l'intestazione è già stata inviata. È inoltre possibile utilizzare il buffering dell'output per evitare questo errore di invio delle intestazioni. L'esempio seguente mostra questa tecnica di reindirizzamento PHP in azione:

Per eseguire un reindirizzamento utilizzando la funzione header(), la funzione ob_start() deve essere la prima funzione nello script PHP. Ciò impedirà il verificarsi di errori di intestazione.

Come misura aggiuntiva, puoi aggiungere die() o exit() immediatamente dopo il reindirizzamento dell'intestazione in modo che il resto del codice della pagina web non venga eseguito. In alcuni casi, i robot o i browser di ricerca potrebbero non prestare attenzione all'indicazione nell'intestazione Posizione. Quali sono le potenziali minacce alla sicurezza del sito:

Per essere chiari: die() o exit() non hanno nulla a che fare con i reindirizzamenti. Vengono utilizzati per impedire l'esecuzione del resto del codice sulla pagina Web.

Quando si reindirizza a una pagina in PHP, si consiglia di utilizzare URL assoluti quando si specifica il valore dell'intestazione Posizione. Ma funzioneranno anche gli URL relativi. Puoi anche utilizzare questa funzione per reindirizzare gli utenti a siti o pagine web esterne.

Emissione del codice di reindirizzamento JavaScript utilizzando la funzione PHP echo()

Questa non è una soluzione PHP pura. Tuttavia, è anche efficace. Puoi utilizzare la funzione PHP echo() per generare il codice JavaScript che gestirà il reindirizzamento.

Se utilizzi questa soluzione, non dovrai utilizzare il buffering di output. Ciò impedisce inoltre che si verifichino errori relativi all'invio di intestazioni.

Di seguito sono riportati alcuni esempi che utilizzano metodi diversi JavaScript per reindirizzare dalla pagina corrente a un'altra:

L'unico svantaggio di questo metodo di reindirizzamento a un altro sito PHP è che JavaScript viene eseguito sul lato client. E i tuoi visitatori potrebbero avere JavaScript disabilitato.

Utilizzo dei meta tag HTML per il reindirizzamento

Puoi anche utilizzare HTML di base per eseguire il reindirizzamento. Può sembrare poco professionale, ma funziona. E non devi preoccuparti che JavaScript sia disabilitato nel tuo browser o che abbia precedentemente inviato un errore di intestazione:

Puoi anche utilizzare l'ultima riga dell'esempio precedente per aggiornare automaticamente la pagina ogni "n" secondi. Ad esempio, il codice seguente aggiornerà automaticamente la pagina ogni 8 secondi.

Ciao amici. Oggi vorrei discutere un argomento molto banale, ma sempre rilevante - questo è 301 Redirect (Permanent Redirect 301) - nella comunità SEO, e senza formalità, questo è esattamente ciò che si intende con la parola "reindirizzamento". Tecnicamente, questa è la risposta del server a una richiesta indirizzata allo stesso; questa risposta ha un codice 301, che indica che l’indirizzo della richiesta è stato spostato in modo permanente. Come risultato di tutte queste astute macchinazioni, dovremmo ricevere un nuovo discorso finale.

Credo che questi aspetti tecnici non siano necessari e quindi voglio parlare di cose applicate: quando e in quali situazioni è meglio utilizzare un reindirizzamento, come e con quali comandi è possibile configurare le regole di reindirizzamento, ecc. Prenderemo in considerazione anche strumenti e servizi con cui potrai verificare la correttezza dei reindirizzamenti.

Dato che il post è risultato molto lungo, ho deciso di fare un sommario per vostra comodità:

Quando DOVREI eseguire un reindirizzamento 301?

Innanzitutto, un reindirizzamento viene utilizzato quando una pagina (un gruppo di pagine o un'intera sezione) ha cambiato indirizzo - molto spesso ciò accade quando la struttura del sito viene modificata, la parte principale dell'URL viene rinominata o il viene modificato il principio di formazione degli indirizzi (in altre parole, CNC). Sfortunatamente, non tutti ci pensano quando cambiano qualcosa sul sito, e di conseguenza ci sono molti duplicati, il che porta alla perdita di posizioni o addirittura all'imposizione di sanzioni da parte dei motori di ricerca. Nel mio lavoro incontro molto spesso tali situazioni e costa molti nervi correggere tutto e neutralizzare le conseguenze. A nome mio, posso raccomandare che prima di qualsiasi lavoro sulla modifica del tipo di CNC o sulla modifica della struttura, fare un piano della struttura attuale del sito, tutte le sue sezioni ed esempi di pagine finali. Tutto ciò dovrà essere controllato al termine del lavoro, in modo che quando andiamo al vecchio indirizzo arriviamo a quello nuovo e il server dia un reindirizzamento con il codice 301 (e non 302).

Il prossimo uso comune dei reindirizzamenti 301 è cambiare l'indirizzo del sito o incollare insieme i mirror. Se decidi di cambiare l'indirizzo del sito web in relazione al rebranding dell'azienda o di registrare un nuovo dominio, più bello e più breve per indicarlo su prodotti promozionali stampati, è molto importante che quando accede all'indirizzo sul vecchio dominio, l'utente finisce sulla stessa pagina (e non su pagina iniziale), ma su un nuovo dominio. Per quanto riguarda i siti promozionali, di solito sono costituiti da una o due pagine, i collegamenti da cui portano al sito principale, oppure quando si accede al sito promozionale si viene immediatamente reindirizzati a una pagina speciale del sito principale. A volte, quando si crea un sito web, vengono registrati più domini contemporaneamente, ad esempio a causa dell'ortografia ambigua del nome dell'azienda in latino. Affinché digitando intuitivamente un indirizzo l'utente arrivi nel posto giusto e vengano registrati più domini, è molto importante che i reindirizzamenti 301 avvengano da tutti i domini "ausiliari" a un indirizzo principale. In nessun caso lo stesso sito web dovrà essere accessibile a tutti gli indirizzi.

E anche sui mirror: può succedere che il tuo sito sia disponibile agli indirizzi http://www.site.ru, http://site.ru e https://site.ru (quest'ultimo è raro, ma succede) - questi sono tutti i classici errori che non dovrebbero essere commessi e per risolverli sono coinvolti i reindirizzamenti 301. Proprio come nel caso di diversi indirizzi di siti web, è necessario decidere il mirror principale (con o senza www) e impostare i reindirizzamenti al mirror principale. Naturalmente, i motori di ricerca non sono stupidi e in tali situazioni spesso se la cavano da soli, e tu puoi anche aiutarli con questo impostazioni corrette nei pannelli dei webmaster e in robots.txt (per Yandex, direttiva Host). Ma la SEO è una questione delicata e non farei affidamento sulla fortuna, ma utilizzerei un metodo collaudato!

A volte si verifica una situazione molto spiacevole quando una copia del sito diventa disponibile non solo quando si inserisce il nome del dominio nella barra degli indirizzi, ma anche l'indirizzo IP del server. È improbabile che questa situazione si verifichi su un hosting condiviso, ma se disponi di un server dedicato, può accadere facilmente. Questo potrebbe essere il motivo di una configurazione errata del server: disabilitare l'accesso quando si accede a un indirizzo IP aiuterà a risolvere il problema, ma la soluzione migliore in questo caso è un reindirizzamento 301 a livello di server web (Apache o Nginx). Un paio di mesi fa ho avuto proprio una situazione del genere: avevo un server dedicato su cui erano bloccati alcuni siti, ma per uno dei siti ho deciso di prendere un altro server separato. Ho trasferito il sito, tutto ha funzionato come un orologio, e poi un giorno mi sono imbattuto in un clone del mio sito nei risultati di Google - shock, panico - si è scoperto che questo era l'indirizzo IP del mio nuovo server e, ovviamente, del mio sito vive su di esso e, quando viene contattato, il server fornisce una risposta 200 OK e Google lo ha completamente indicizzato. Sul server precedente non c'era questo problema; inizialmente era configurato un reindirizzamento 301 dall'IP al dominio indicato come principale per questo IP. Ora ho imparato dall'amara esperienza e controllo sempre queste cose: sii consapevole e tu, non ripetere gli errori. Il problema è stato risolto aggiungendo un reindirizzamento al dominio principale nelle configurazioni del server web nginx; mostrerò un esempio del codice nella parte pratica del post qui sotto.

La situazione è simile alla precedente: quando una copia del sito viene individuata ed è accessibile tramite un dominio di prova del servizio, ad esempio come site.hosting.ru. Casi del genere si verificano anche nella mia pratica e, a differenza del caso precedente, questo è tipico dell'hosting virtuale. Perché esiste questo? Ad esempio non hai ancora acquistato un dominio oppure stai trasferendo un sito da un hosting ad un altro, ma i server NS del dominio non sono stati modificati o non sono stati ancora aggiornati record DNS presso il fornitore. In tali situazioni lo fanno indirizzi di prova, dove potrai configurare e installare tutto prima di reindirizzare l'indirizzo del sito al nuovo hosting. E alcuni hoster peccano non bloccando l’accesso a tali indirizzi tecnici e nemmeno vietandone l’indicizzazione. Se ti trovi in ​​questa spiacevole situazione, dovresti provare a registrare un reindirizzamento 301 dall'indirizzo tecnico a quello principale nel file .htaccess.

E, naturalmente, ai reindirizzamenti 301 piace molto utilizzare i giusti SEO per combattere varie pagine duplicate. Perché solo i SEO giusti? Sì, perché le persone sbagliate sono entrate nel sito web del cliente e, cosa molto probabile, hanno iniziato ad acquistare collegamenti senza nemmeno visitare il sito - ahimè, questo non è raro. Periodicamente vengo contattato da clienti che vogliono verificare l'integrità dei propri collaboratori/dipendenti incaricati di ottimizzare e promuovere il sito, come sta andando il lavoro - - e finora non mi è mai capitato di non riscontrare errori o mancanze sui siti. Quindi tieni presente che sono sempre felice di aiutarti. Torniamo ai duplicati: credo che invece di impedire l'indicizzazione dei duplicati, sia necessario reindirizzare all'indirizzo principale, e questo non è così interessante. Naturalmente, ci sono molti casi in cui le riprese sono forzate e quindi non puoi fare a meno della canonizzazione, ma se hai l'opportunità di effettuare un reindirizzamento, assicurati di farlo. Casi frequenti di duplicati che devono essere sempre controllati: indirizzi con e senza barra finale, indirizzi con parametri ed etichette - di seguito ti dirò come risolvere.

Quando puoi eseguire un reindirizzamento 301?

Non puoi scrivere molto in questa sezione, ma ci proverò. Spero davvero che dopo aver letto mi aggiungerai un paio di idee nei commenti.

Il reindirizzamento 301 può essere utilizzato come risposta del server anziché un errore 404 Non trovato– in altre parole, un utente che segue un collegamento errato o una pagina inesistente non vedrà il messaggio “Siamo spiacenti, questa pagina non esiste più”, ma verrà trasferito su un'altra pagina esistente. Questo è un punto molto controverso tra gli esperti e quindi non impongo la mia opinione a nessuno. Ma io preferisco usare un reindirizzamento invece dell'errore 404, e ci sono diverse opzioni per lo sviluppo degli eventi... Guarda, ci sono 2 categorie di errori 404: la prima è classica, quando la pagina è stata effettivamente cancellata, la il secondo è quando l'errore appare a causa di collegamenti esterni storti. Nel primo caso, probabilmente non dovresti eseguire un reindirizzamento, ma lasciare l’errore 404 così com’è. Ma nel secondo caso, dovresti occuparti di un reindirizzamento all'indirizzo URL corretto, se può essere ripristinato da un collegamento interrotto, o di un reindirizzamento alla pagina principale (o categoria).

Quando NON eseguire un reindirizzamento 301

Qualche parola su quando un reindirizzamento può danneggiarti e quindi non dovrebbe essere utilizzato nelle seguenti situazioni.

La cosa più importante è evitare di commettere errori, non dovresti lasciarti coinvolgere dai reindirizzamenti se non sei sicuro al 100% di quello che stai facendo o hai dei dubbi su qualcosa. Prendilo come un consiglio amichevole :)

Un reindirizzamento permanente non dovrebbe essere utilizzato per soluzioni temporanee, questo è ovvio dal suo nome: per un trasferimento temporaneo, utilizzare 302 Moved Temporarily. In questo caso le pagine non verranno incollate tra loro e la pagina con il reindirizzamento potrà essere ripristinata in qualsiasi momento.

Se ci sono problemi con il tuo dominio, ad esempio filtri, divieti, ecc., e decidi di cambiare l'indirizzo del sito (dominio), non dovresti eseguire un reindirizzamento 301 dal vecchio dominio a quello nuovo, di conseguenza , "incollerai" e tutti i problemi del vecchio. Cioè, alla fine non cambierà nulla. Sì, da tempo esisteva una soluzione per uscire dal filtro Google Penguin utilizzando un reindirizzamento 301 completo dal vecchio dominio a quello nuovo. In effetti, tutte le posizioni sono state ripristinate al livello prima delle sanzioni, e questa sembrava essere una panacea per il malvagio Pinguino, ma con il successivo aggiornamento dell'algoritmo, questa caratteristica è stata presa in considerazione e anche il nuovo dominio è caduto sotto il filtro, di conseguenza, nulla è migliorato dopo il cambio di dominio. Se hai già deciso di cambiare dominio, puoi provare a trasferire tutto il contenuto sul nuovo dominio, cancellarlo su quello vecchio e creare uno stub con un messaggio sullo spostamento o, meglio ancora, ricominciare tutto da capo da zero.

Esistono molti modi per effettuare un reindirizzamento 301: tramite htaccess, php, javascript, impostazioni del server, ecc. - quindi non dovresti provare a utilizzare tutti i metodi contemporaneamente, la probabilità di "disaccordi" tra diversi modi e puoi, ad esempio, ottenere un reindirizzamento ciclico infinito.

Quando si lavora con una struttura di sito complessa o si riprogetta un portale di grandi dimensioni, spesso si verificano reindirizzamenti multipli o lunghe catene. Ciò significa che il reindirizzamento non avviene in un unico passaggio, ma in due o più passaggi: questa è una brutta situazione e dovrebbe essere evitata se possibile. Quando fai clic su questo collegamento robot di ricerca, avendo ricevuto diversi reindirizzamenti consecutivi, potrebbe pensare di essere stato ingannato e smettere di seguire ulteriormente e smettere del tutto di prendere in considerazione i collegamenti. Ecco un esempio tratto dalla mia pratica: una volta mi sono imbattuto in un sito per un audit con una catena così inaspettata:

http://site.ru/tax/term/30 ->
http://www.site.ru/tax/term/30 ->
http://www.site.ru/tax/term/30/ ->
http://www.site.hosting.ru/404.php ->
http://www.site.ru/404.php

E alla fine, la pagina http://www.site.ru/404.php, che dovrebbe dare un errore 404, dà una risposta 200 OK. Questo mi ha addirittura sbalordito, ma immagina cosa penserebbe un robot di ricerca se entrasse in una giostra del genere! Non solo tre diversi domini hanno partecipato alla catena, ma la pagina di errore dice anche che non si tratta di un errore e dovrebbe essere indicizzato.

Se possibile, cercare di evitare reindirizzamenti all'interno del sito: se i collegamenti esterni al sito non possono essere corretti e un reindirizzamento è inevitabile, i collegamenti interni dovrebbero essere corretti. Ciò potrebbe non influire sulla qualità dell’indicizzazione e del ranking, ma non puoi esserne sicuro, quindi è meglio evitare situazioni così controverse. Uno meraviglioso ti aiuterà a tenere traccia dei reindirizzamenti interni e in generale degli errori all'interno del sito.

Quando crei regole di reindirizzamento in .htaccess, escludi gli indirizzi reali di directory e file sul server e monitora la selezione. La situazione per il sito che una volta ho controllato era che nella lotta contro le pagine di categoria duplicate con e senza barra alla fine, il webmaster ha esagerato un po' e, al contrario, ha solo aggravato il problema. Non solo le regole di riscrittura hanno influenzato i veri script js e i file di stile css, facendoli smettere di funzionare correttamente, ma anche alcune pagine hanno ricevuto una barra non necessaria alla fine e sono comparsi dei duplicati. Amici, assicuratevi attentamente che le regole che create si applichino solo al gruppo di indirizzi con cui state lavorando e limitiate tutti gli altri.

Per cercare pagine problematiche e i relativi indirizzi di cui devi sbarazzarti, utilizza le funzionalità dei pannelli webmaster di Yandex e Google. Per Yandex Webmaster: seleziona un sito -> Indicizzazione del sito -> Pagine escluse. Per Google Webmaster: Seleziona sito –> Ottimizzazione –> Ottimizzazione HTML; E anche: Seleziona il sito -> Configurazione -> Parametri URL.

Funzionalità di indicizzazione e reindicizzazione dei reindirizzamenti in Yandex e Google. Quando lotti con duplicati e indirizzi problematici, ovviamente, aspetterai che gli errori vengano rimossi dai pannelli del webmaster; ci sono alcune funzionalità qui. Con Google tutto è semplice: imposti i reindirizzamenti, le modifiche verranno indicizzate entro 2 settimane, nello stesso tempo gli errori inizieranno a scomparire dal pannello del webmaster, di solito dopo un mese tutti gli errori scompariranno. Con Yandex c'è una sottigliezza, ed è la seguente: dopo aver impostato i reindirizzamenti, puoi aspettare per sempre che gli errori scompaiano dal pannello. Una volta ho aspettato sei mesi finché non ho scritto all'assistenza, dove mi hanno informato che inoltre per effettuare il reindirizzamento è necessario chiudere ulteriormente le pagine problematiche nel file robots.txt e solo allora scompariranno dal pannello del webmaster.

Reindirizzamento permanente 301 tramite .htaccess

Questo metodo di installazione dei reindirizzamenti è il più popolare e il più semplice. Anche se, devo ammetterlo, non tutto è così semplice come sembra, quindi ho intenzione di scrivere un post separato su htaccess. Il lato positivo questo metodoÈ da notare che il reindirizzamento viene attivato a livello di server e prima dell'inizio dell'elaborazione di eventuali script del sito e non comporta alcun carico aggiuntivo.

Probabilmente hai già un file .htaccess sul tuo server (nella root, dove si trova l'index.php principale). Se questo file non è visibile:

  • Controlla le impostazioni del gestore ftp, può nascondere sistemi e file, che è il file htaccess
  • Vai a gestore di file attraverso il pannello di controllo dell'hoster e controlla i permessi per il file. Non intendo CHMOD, ma potrebbero esserci un gruppo e un utente, ad esempio utente root e ti connetti tramite ftp utilizzando l'accesso utente del proprietario del dominio.
  • Il file potrebbe semplicemente non esistere :) Quindi dovrebbe essere creato, ma sotto Windows a volte sorge un problema, perché infatti il ​​file .htaccess viene visto dal sistema come un file senza nome e con solo un'estensione. Suggerisco un modo semplice: crea un normale file txt, aggiungi la riga "RewriteEngine On" (senza virgolette), carica il file txt sul server, rinomina il file in .htaccess sul server

La maggior parte delle modifiche relative al reindirizzamento dovrebbero essere scritte all'inizio del file dopo la riga "RewriteEngine On" in modo che queste regole vengano elaborate per prime. È importante seguire la sequenza delle azioni, perché i comandi vengono elaborati dal server riga per riga dall'inizio fino alla prima occorrenza. In altre parole, dovresti sempre iniziare con un campione particolare e terminare con un campione più generale.

Diamo un'occhiata ad alcuni degli esempi più comuni e utili:

Reindirizzamento 301 per un dominio da www.site.ru a site.ru

RewriteCond %(HTTP_HOST) !^www\.(.*) RewriteRule ^(.*)$ http://www.%1/$1

Le opzioni di reindirizzamento di cui sopra funzionano alla grande e non richiedono alcuna modifica da parte tua: basta inserire il file nel file .htaccess. Tuttavia, per essere sicuro al 100%, ti consiglierei un'altra opzione:

RewriteCond %(HTTP_HOST) !^www.site.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1

RewriteCond %(HTTP_HOST) !^www.site.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1

RewriteCond %(HTTP_HOST) !^site.ru$ RewriteRule ^(.*)$ http://site.ru/$1

RewriteCond %(HTTP_HOST) !^site.ru$ RewriteRule ^(.*)$ http://site.ru/$1

La prima è per chi ha un dominio principale con www, la seconda è per chi non ha www. Pertanto in entrambi gli esempi dovrai inserire il nome del tuo dominio invece di “sito”.
Quindi, perché queste opzioni sono migliori? Molto semplicemente, controllano non solo l'assenza/presenza di www nel nome a dominio, ma controllano anche la piena conformità del nome a dominio.
Esempio dal vivo: sicuramente ti sei imbattuto nel fatto che inaspettatamente un sito può essere indicizzato da un indirizzo di servizio sull'hosting (tale indirizzo viene rilasciato in modo che sia possibile accedere al sito prima di collegare il tuo dominio reale), qualche mirror o persino un IP indirizzo! Quindi, le regole universali verificheranno solo l’assenza/presenza di www, e non importa a quale dominio accede l’utente o il robot di ricerca.
Quindi, utilizzando l'opzione avanzata, sarai sicuro al 146% che il tuo sito sarà accessibile solo ed esclusivamente utilizzando il nome di dominio da te specificato personalmente e tenendo conto di www. Io uso solo questa opzione e te la consiglio!

Reindirizzamento 301 da http a https

Alla luce della massiccia transizione dei siti verso un protocollo sicuro, è necessario sapere come reindirizzare da http a https. A proposito, se non hai ancora scelto un certificato SSL, dovresti leggere il mio post su .

Di seguito ti offro diverse opzioni per un reindirizzamento 301 dal protocollo http a https, che può funzionare o meno a seconda della configurazione del tuo server, ma una delle regole sarà sicuramente adatta a te:

RewriteCond %(HTTPS) !=on RewriteRule ^(.*)$ https://%(HTTP_HOST)/$1

RewriteCond %(HTTPS) !=on RewriteRule ^(.*)$ https://%(HTTP_HOST)/$1

RewriteCond %(SERVER_PORT) !^443 $ RewriteRule ^(.*)$ https://%(SERVER_NAME)%(REQUEST_URI)

RewriteCond %(SERVER_PORT) !^443$ RewriteRule ^(.*)$ https://%(SERVER_NAME)%(REQUEST_URI)

RewriteCond %(ENV:HTTPS) !on RewriteRule ^(.*)$ https://%(HTTP_HOST)%(REQUEST_URI)

RewriteCond %(ENV:HTTPS) !on RewriteRule ^(.*)$ https://%(HTTP_HOST)%(REQUEST_URI)

RewriteCond %(HTTP:X-HTTPS) !1 RewriteRule ^(.*)$ https://%(HTTP_HOST)/$1

RewriteCond %(HTTP:X-HTTPS) !1 RewriteRule ^(.*)$ https://%(HTTP_HOST)/$1

RewriteCond %(HTTPS) disattivato RewriteCond %(HTTP:X-Forwarded-Proto) !https RewriteRule ^(.*)$ https://%(HTTP_HOST)%(REQUEST_URI)

Reindirizzamento dal protocollo https a http (onestamente, non so perché potresti averne bisogno):

RewriteCond %(HTTPS) =on RewriteRule ^(.*)$ http://%(HTTP_HOST)/$1

RewriteCond %(HTTPS) =on RewriteRule ^(.*)$ http://%(HTTP_HOST)/$1

Recentemente ho scritto molto istruzioni dettagliate. Se stai pianificando il passaggio da https a https, devi leggerlo!

Porterò un po' di chiarezza sull'incomprensibile gobbledygook:

  • RewriteCond denota una condizione che, se soddisfatta, eseguirà RewriteRule. Usando espressioni regolari vengono specificati i modelli di stringa.
  • Variabili del server:
    • %(REQUEST_URI) - parte dell'URL senza nome di dominio e parametri GET, ad esempio, per la pagina che stai leggendo: blog/post/4393,
    • %(HTTP_HOST) - host o Nome del dominio, ad esempio: sito web
    • %(QUERY_STRING) - una stringa con una serie di parametri GET, ovvero la parte dell'URL dopo il punto interrogativo (e prima della griglia di ancoraggio, se presente).
    • %(REQUEST_FILENAME) — percorso completo V file system server in un file o script corrispondente a questa richiesta..php, ma nel file system del server questa è la terribile riga /var/www/site/data/www/site/index.php.
      Succede che quando si effettua un reindirizzamento si ottiene un risultato inaspettato, ad esempio si desidera rimuovere i parametri post=17434801_4060 nell'indirizzo http://site.ru/page-name?post=17434801_4060 , indicate le regole corrispondenti ( verranno scritti di seguito), ma alla fine abbiamo ottenuto la riga http://site.ru/usr/local/www/site.ru/www/page-name - ci siamo sbarazzati dei parametri, ma abbiamo ottenuto un indirizzo strano. Tutto questo perché non hai specificato una direttiva RewriteBase / all'inizio del file dopo RewriteEngine On, che imposta un URL di base specifico per le trasformazioni nel contesto di una directory.
  • I metacaratteri vengono utilizzati per definire gruppi di caratteri o "tag" in uno schema:
    • ^ — segno di inizio linea,
    • $ è il segno di fine riga,
    • ! - rifiuto,
    • \ - barra di escape, permette di considerare il metacarattere che lo segue come un carattere normale,
    • . – punto, denota qualsiasi carattere, ma solo uno,
    • () – raggruppamento.
  • I modificatori vengono posizionati dopo i caratteri regolari, i metacaratteri o i loro gruppi ed espandono le possibilità di utilizzo dei modelli:
    • ? — il simbolo viene ripetuto 0 o 1 volta,
    • * — Ripetuto da 0 a 65536 volte,
    • + — Si ripete da 1 a 65536 volte.
  • I flag definiscono opzioni aggiuntive per questa regola e sono elencati in parentesi quadre separati da virgole:
    • NC - (nocase) disabilita il controllo delle maiuscole e minuscole.
    • R - (reindirizzamento) interrompe il processo di conversione e restituisce il risultato al browser client come reindirizzamento a questa pagina(302, SPOSTATO TEMPORANEAMENTE). Con questo flag puoi specificare un codice risultato diverso, ad esempio R=301 restituirà un reindirizzamento con il codice 301 (MOVED PERMANENTLY). Come hai capito, questo è esattamente ciò di cui abbiamo bisogno.
    • L - (ultimo) interrompe il processo di conversione e il collegamento corrente è considerato definitivo.

Il caso più comune è un reindirizzamento 301 da index.php (html) alla pagina principale. Sul 90% dei siti c'è il problema di duplicare la pagina principale agli indirizzi http://site.ru e http://site.ru/index.php (o index.html, index.htm o qualsiasi altra opzione , non importa, o anche tutto in una volta). Da qualche parte questo è ovvio, quando, ad esempio, un collegamento dal logo porta a site.ru e un collegamento nel menu porta a site.ru/index.php, da qualche parte non è ovvio, quando viene trovato un duplicato quando si accede l'indirizzo da index.php manualmente. È importante risolvere semplicemente il problema. E offro un'opzione universale, eccola qui:

RewriteCond %(THE_REQUEST) ^(3 ,9 )\ /index\.(php|html|htm)\ HTTP/ RewriteRule ^(.*)index\.(php|html|htm)$ $1

RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.(php|html|htm)\ HTTP/ RewriteRule ^(.*)index\.(php|html|htm)$ $1

Basta incollare questo codice senza modifiche dopo la riga dopo la riga "RewriteEngine On" e nessun problema!

Molti di coloro che iniziano a lottare con i duplicati sul sito si chiedono da dove provengano tali collegamenti che duplicano la pagina principale http://site.ru/page-name.html&post=-1234567_8901? Da dove viene il prefisso &post=-1234567_8901 - questo "buono" è preso da VKontakte, quando qualcuno condivide un collegamento al tuo sito sulla propria bacheca, in un gruppo o in pubblico, una riga simile viene aggiunta automaticamente, apparentemente per tenere traccia di alcune statistiche .

Per eliminare queste sciocchezze una volta per tutte è necessario aggiungere a htaccess:

RewriteCond %(REQUEST_URI) ^(.*)\&sa= RewriteRule ^(.*)\&sa=(.*)$ $1

Come puoi vedere, non c'è differenza tra questo e il caso precedente, anche se hai &post= o &sa= o qualsiasi altra cosa nell'url, la soluzione è la stessa, devi solo sostituire le parti ovvie del codice. chiaro, vero?

Eliminazione di parametri o tag nell'indirizzo

La domanda è stata posta nei commenti e molte volte sul forum, quindi non può essere ignorata. Cosa fare con tali duplicati: http://site.ru/?abrakadabra o un caso più reale http://site.ru?utm_source=twitterfeed&utm_medium=twitter

Questo caso è leggermente diverso dal punto successivo, in cui elimineremo i parametri per lo script PHP, poiché qui non passiamo allo script i soliti indirizzi e parametri. Ecco la soluzione:

RewriteCond %(QUERY_STRING) ^lang=ru$ RewriteRule ^(.*)\.php\?(.*)$ $1\.php

%(QUERY_STRING) è una stringa con un insieme di variabili per PHP, la parte dell'URL dopo il punto interrogativo (e prima dell'hash di ancoraggio, se presente).

URL della chiamata: http://site.ru/index.php?lang=ru

RiscriviCond %(QUERY_STRING) ^lang=ru $
L'URL richiesto rientra in questa regola, non ci sono altre regole, quindi la RewriteRule verrà eseguita nella riga sottostante.
RewriteRule ^(.*) \.php\?(.*) $ $1 \.php

URL di origine: http://site.ru/index.php?lang=ru
Modello di analisi URL: ^(.*) \.php\?(.*) $
L'URL verrà analizzato in variabili: $1 = http://site.ru/index, $2 = lang=ru e riassemblato nella forma http://site.ru/index .php ($1 \.php)
E poi ci sarà un reindirizzamento 301 al nuovo URL.

Esempio di regole quando si modifica la struttura del sito

RewriteRule ^post/categoria/(.*)$ blog/categoria/$1 RewriteRule ^post/(.*)$ blog/post/$1

RewriteRule ^post/categoria/(.*)$ blog/categoria/$1 RewriteRule ^post/(.*)$ blog/post/$1

Queste sono le righe che ho dovuto aggiungere al file htaccess quando ho cambiato la struttura del mio blog.

In precedenza, avevo i seguenti indirizzi: https://site/post/4358 e https://site/post/category/seo, che in qualche modo rompevano la logica nella struttura - dopotutto, il blog è solo una parte del sito , ma per qualche motivo i post appartengono al sito, non al blog, e le categorie appartengono ai post, il che è del tutto illogico..info/blog/category/seo - ora il blog è una sezione separata del sito, e i post gli appartengono, e le categorie appartengono al blog, non ai post.

Dallo stesso esempio è chiaro che è importante seguire la sequenza delle regole. Se scambiassi le righe, cioè la riga RewriteRule ^post/(..info/blog/post/category/seo verrebbe in primo piano e non come dovrebbe su https://site/blog/category/seo.

E l'ultimo esempio è l'analisi di un errore comune con l'indirizzo dalla radice del server

Ad esempio, hai deciso di risolvere un problema quando la pagina delle categorie è disponibile a due indirizzi http://site.ru/razdel/podrazdel/index.php e http://site.ru/razdel/podrazdel/. Il secondo URL è corretto ed è quello principale, e l'URL con index.php alla fine è un duplicato completo che deve essere smaltito.

Per reindirizzare da index.php a una categoria, scrivi la seguente regola:

RewriteEngine su RewriteBase /

Reindirizzamento 301 da una pagina all'altra a un nuovo indirizzo

Il caso più semplice è quando è necessario reindirizzare una pagina a un altro indirizzo. Se devi effettuare un reindirizzamento per più pagine, dovrai scrivere diverse regole, ma in questo caso è meglio utilizzare i modelli sopra descritti. Esistono diverse opzioni di sintassi completamente identiche:

Reindirizzamento 301 /nome-pagina1.html http://site.ru/nome-pagina2.html Reindirizzamento permanente /nome-pagina1.html http://site.ru/nome-pagina2.html ReindirizzamentoPermanente /nome-pagina1.html http http://site.ru/page-name2.html

Reindirizzamento 301 /nome-pagina1.html http://site.ru/nome-pagina2.html Reindirizzamento permanente /nome-pagina1.html http://site.ru/nome-pagina2.html ReindirizzamentoPermanente /nome-pagina1.html http http://site.ru/page-name2.html

Scegli una delle tre, ma personalmente preferisco la prima opzione: è più breve, più semplice e più comprensibile. A proposito, qui site.ru potrebbe non essere necessariamente lo stesso dominio, ma qualsiasi altro.

Terminiamo con .htaccess e passiamo a PHP.

Reindirizzamento permanente 301 utilizzando PHP

Di solito utilizzo il reindirizzamento PHP quando ci sono difficoltà con .htaccess o si scopre che la funzione PHP risulta essere più logica e comprensibile.

La sintassi di un reindirizzamento 301 in php è simile alla seguente:

intestazione(); header("Posizione: http://site.ru"); die("Reindirizzamento");

header("HTTP/1.1 301 spostato permanentemente"); header("Posizione: http://site.ru"); die("Reindirizzamento");

Queste righe indicano al browser del cliente che è necessario reindirizzare in modo permanente da qualche pagina richiesta all'indirizzo http://site.ru. In questo caso, http://site.ru può essere non solo l'indirizzo della pagina principale del sito corrente, ma può anche essere qualsiasi altro sito. Se qualcosa è andato storto e si è verificato un errore, nella finestra del browser vedremo la scritta "Reindirizzamento".

Per renderlo più chiaro, ecco alcuni esempi di funzioni che ho scritto per il mio sito blog, cercando di risolvere alcuni problemi.

Una funzione che ti consente di rimuovere una determinata parte dall'URL

if (strpos($_SERVER["REQUEST_URI" ], "http://sito" ) !== false) ( $real_page_url = "http://sito" .str_replace ("/http://sito" , "" , $_SERVER["REQUEST_URI" ]); intestazione ("HTTP/1.1 301 spostato permanentemente" ); intestazione ("Posizione: $real_page_url" ); die("Reindirizzamento" ); )

if (strpos($_SERVER["REQUEST_URI"], "http://site") !== false) ( $real_page_url = "http://site"..1 301 spostato permanentemente"); header("Posizione: $real_page_url"); die("Reindirizzamento"); )

Una volta ho avuto il problema che apparivano una serie di errori 404 nel pannello del webmaster, gli indirizzi di queste pagine erano come https://alaev..e. Da qualche parte nell'indirizzo è apparso l'indirizzo di un sito duplicato. E poi ho scritto una funzione che controlla se l'URI (nota, non l'URL, ma l'URI) contiene la voce "http://site", e se lo fa, ritagliamo questo pezzo dall'indirizzo e scriviamo il risultato alla variabile $real_page_url, quindi eseguiamo un reindirizzamento 301 all'indirizzo corretto dalla variabile.

Funzione che rimuove la barra finale dall'URL

if (($_SERVER["REQUEST_URI" ], - 1 , 1 ) == "/" ) ( $requested_url = rtrim($requested_url, "/" ); intestazione ("HTTP/1.0 301 spostato permanentemente" ); intestazione ( "Posizione: $url_richiesto" ); die("Reindirizzamento" ); )

if (($_SERVER["REQUEST_URI"], - 1, 1) == "/") ( $requested_url = rtrim($requested_url, "/"); header("HTTP/1.0 301 spostato permanentemente"); header( "Posizione: $url_richiesto"); die("Reindirizzamento"); )

Ecco la funzione più semplice che controlla se l'indirizzo richiesto della pagina ha una barra alla fine e, se ce n'è una, la barra viene tagliata e si verifica un reindirizzamento 301 all'indirizzo senza barra.

Esistono molte altre opzioni che ti consentono di eseguire un comando di reindirizzamento in diversi linguaggi di programmazione, come ASP, Ruby on Rail, ecc., Ma non ho familiarità con questi linguaggi, quindi non sarò intelligente e non ti ingannerò qui . I reindirizzamenti sono possibili anche utilizzando il meta tag meta refresh, così come i reindirizzamenti a Javascript, ma questo è il destino degli sviluppatori doorway disonesti e i motori di ricerca non capiscono questi reindirizzamenti; ricevono una risposta 200 OK dal server. Quindi non stiamo considerando queste opzioni.

Reindirizzamento permanente 301 per il server nginx

Ricordi che ho scritto di un mirror del mio sito, accessibile tramite IP? Di conseguenza, il problema è stato risolto con un reindirizzamento scritto nel file di configurazione del server, solitamente situato qui /etc/nginx/nginx.conf. Lì sono state scritte le seguenti righe:

server ( ascolta 1.2.34.123:80 predefinito; nome_server _; riscrivi ^/(.*)$ http://site.ru/$1 permanente; )

server ( ascolta 1.2.34.123:80 predefinito; nome_server _; riscrivi ^/(.*)$ http://site.ru/$1 permanente; )

Qui dice che se si accede a un indirizzo IP tramite la porta 80, è necessario eseguire un reindirizzamento permanente a site.ru.

Tuttavia, il supporto tecnico non mi ha consigliato di farlo con le parole: “Sarebbe più corretto configurare il server HTTP in modo tale che chiuda semplicemente la connessione se si accede ad un indirizzo non esplicitamente specificato nella Configurazione del server HTTP, questa è l'opzione più affidabile, semplice, sicura e meno impegnativa per le risorse del server. Dopo un po’ di tempo, le pagine che non sono più accessibili verranno probabilmente espulse dall’indice dei motori di ricerca”.

Il consiglio successivo è stato questo: "Quando è necessario chiudere semplicemente la connessione invece di reindirizzare, al posto della riga specificare "riscrivi ^/(.*)$ http://site.ru/$1 permanente;" tale riga "return 444;". Quindi esegui: "invoke-rc.d nginx reload"".

Forse questo aiuterà qualcuno.

Esempi di reindirizzamenti nei casi più comuni

Reindirizzamento del dominio www.site.ru a site.ru

server ( ascolta 80; nome_server site.ru; riscrivi ^ http://www.site.ru$request_uri? permanente; )

Reindirizzamento dall'indirizzo http://site.ru/index.php a http://site.ru/

location = /index.php ( if ($request_uri = /index.php) ( riscrivi ^ http://$host? permanent;#301 reindirizzamento ) fastcgi_pass unix:/tmp/fastcgi.sock; fastcgi_index indice.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; )

location = /index.php ( if ($request_uri = /index.php) ( riscrivi ^ http://$host? permanente;#301 reindirizzamento ) fastcgi_pass unix:/tmp/fastcgi.sock; fastcgi_index indice.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; )

Qualcosa del genere. Non sono bravo a impostare configurazioni per nginx; mi accontento sempre delle impostazioni di Apache, quindi se hai domande su nginx, difficilmente sarò in grado di aiutarti...

Come controllare le intestazioni HTTP e gli stati di risposta del server

In questa sezione volevo descrivere vari servizi e plugin per controllare la risposta del server, ma capisco che questo post è già così voluminoso che dovrò limitarmi solo ai collegamenti alle estensioni per Browser Chrome e Firefox.

Componente aggiuntivo HttpFox per Firefox

HttpFox (qui c'è un collegamento al componente aggiuntivo) è il mio strumento di monitoraggio delle intestazioni http preferito. HttpFox mostra l'avanzamento del caricamento della pagina riga per riga, consentendo di tenere traccia, ad esempio, delle catene di reindirizzamenti e, in generale, dell'ordine e della velocità di caricamento della pagina. Se usi Mozilla, lo consiglio vivamente.

Estensione intestazioni HTTP per Chrome

Io stesso non utilizzo l'estensione HTTP Headers (ecco un collegamento ad essa), ma Internet mi ha consigliato di prestarvi attenzione. Se hai opzioni migliori, pubblicale nei commenti.

Questo conclude il mio post terribilmente lungo e noioso, amici.
Grazie per aver letto fino alla fine, spero che tu lo abbia trovato davvero utile.

Il file di configurazione .htaccess è una configurazione per i server Web Apache. La maggior parte dei siti di hosting funziona tramite questo server, quindi ogni sito ha questo file. I webmaster possono controllarne parzialmente il funzionamento apportando le proprie modifiche. In questo articolo esamineremo le direttive e le regole che possono essere modificate nel funzionamento del server.

Il file .htaccess più importante si trova nella root del sito:

Le sue azioni si applicano alla directory corrente e a tutte le sottodirectory. Quelli. I proprietari dei siti hanno l'opportunità di influenzare solo il lavoro del proprio progetto senza interferire con il lavoro dell'intero server. Se questo file manca, può essere creato utilizzando qualsiasi blocco note. La cosa principale è che il nome del file dovrebbe essere ".htaccess" - senza i formati .txt, .doc, ecc.

I reindirizzamenti 301 sono spesso configurati a livello di server tramite il file .htaccess, il che accelera notevolmente il processo di passaggio a nuova pagina, Perché non è necessario caricare una pagina intermedia. Specifica inoltre quale file elabora l'errore 404.

Di seguito esamineremo tutte le opzioni comuni per i reindirizzamenti tramite .htaccess e prima familiarizzeremo con le opzioni e le regole.

Per poter lavorare con i reindirizzamenti, è necessario abilitare il modulo ReWriteEngine. Per fare ciò, devi scrivere due righe di codice (preferibilmente all'inizio del file .htaccess):

Opzioni +FollowSymLinks RewriteEngine attivo

Posiziona queste righe all'inizio del tuo file .htaccess per poter lavorare con le direttive del modulo mod_write.

Inoltre, i moduli mod_alias devono essere abilitati sull'hosting (per supportare Redirect, RedirectPermanent e RedirectMatch).

1. Regole di reindirizzamento, RewriteRule e RewriteCond 1.1. Direttiva reindirizzamento

Sintassi di reindirizzamento:

Reindirizza /da http://a_indirizzo_completo

Reindirizzamento imposta un reindirizzamento diretto da una pagina all'altra.

Il codice di reindirizzamento è scritto in status. È un parametro facoltativo. Molto spesso scrivono 301, che segnala un cambiamento permanente dell'indirizzo della pagina.

È importante che la pagina “da” sia scritta in un formato senza indicare l’indirizzo completo del sito, ma indicando l’URL completo relativo che inizia con una barra “/” (ovvero dalla radice del sito). La pagina in cui va il reindirizzamento deve essere scritta per intero, ad es. indirizzo URL assoluto della pagina (ovvero con il nome del dominio e il protocollo http o https).

Per esempio

Reindirizzamento 301 /oldpage.php http://site/newpage.php

Puoi anche scriverlo diversamente

RedirectPermanent 301 /oldpage.php http://site/newpage.php o Redirect permanente 301 /oldpage.php http://site/newpage.php 1.2. Direttiva RewriteRule

La direttiva RewriteRule imposta le regole di transizione. La sintassi è la seguente:

Sostituzione del modello RewriteRule [codici]
  • Quando si verifica un reindirizzamento esterno, l'URL nella riga del browser cambia: " "
  • Con interno - non cambia l'URL nella riga del browser - " " o "[L] "
1.3. Direttiva RewriteCond

La direttiva RewriteCond definisce le condizioni in cui vengono eseguite le regole nella RewriteRule.

RewriteCond Comparison_String Condizione

Ad esempio, questi termini potrebbero essere il browser dell'utente, l'indirizzo IP, il titolo, ecc.

1.4. Direttiva RedirectMatch

La direttiva RedirectMatch è simile a Redirect, l'unica differenza è che consente di scrivere espressioni regolari.

RedirectMatch From Where To 2. Esempi di reindirizzamenti 301 in .htaccess

Abbiamo già visto molti esempi con un reindirizzamento .htaccess negli articoli:

  • Modifica dell'indirizzo del sito web: reindirizzamento dal vecchio dominio a quello nuovo

Qui aggiungeremo opzioni per i reindirizzamenti che ancora non esistevano.

2.1. Reindirizzamento da una pagina all'altra

Reindirizzamento da site.ru/cat/oldpage a site.ru/newpage.html

RewriteRule ^cat/oldpage.* /newpage.html

Oppure la seconda opzione:

Reindirizzamento 301 /cat/oldpage http://www.site.com/newpage.php 2.2. Reindirizzamento da tutti i file .htm a .html RewriteCond %(REQUEST_FILENAME) !-f RewriteRule ^(.*)\.htm$ $1.html

Oppure la seconda opzione:

RewriteRule ^(.*)\.htm$ $1.html 2.3. Reindirizzare l'intera directory su un'altra pagina

Qualsiasi pagina nella directory /old/ e nelle sottodirectory verrà reindirizzata a /new.php

RiscriviRule ^old(.*)$ /new.php 2.4. Rimozione di barre extra da un URL

Ad esempio, la pagina /catalog///stranica.html è accessibile e si apre. Per evitare questa situazione e non creare un numero infinito di duplicati, dovresti scrivere il seguente reindirizzamento

RewriteCond %(REQUEST_URI) ^(.*)//(.*)$ RewriteRule . %1/%2 2.5. Riscrivi senza reindirizzamento

Puoi caricare una pagina diversa senza modificare l'URL della pagina. Ad esempio, carichiamo la pagina /news.html e la barra degli indirizzi mostrerà l'indirizzo /news/happy

RewriteRule ^news/happy.* /news.html [L] 2.6. Aggiunta di una barra finale alla fine dell'indirizzo della home page

Ad esempio, molti server funzionano in modo tale che l'ultima barra non venga scritta nell'URL. Ad esempio, http://site.ru. Il codice seguente risolve questo problema: il sito si aprirà all'indirizzo http://site.ru/

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/ 2.7. Rimozione della directory dall'URL

Ad esempio, per reindirizzare dalla pagina site.com/directoriya/stranica.html a site.com/stranica.html è necessario inserire quanto segue:

RewriteRule ^directoriya/(.+)$ http://site.com/$1

Oppure la seconda opzione:

RewriteCond %(DOCUMENT_ROOT)/directoriya/$1 -f RewriteRule ^(.*)$ directoryya/$1 2.8. Reindirizzare i parametri GET

Ad esempio, reindirizza dalla pagina /?act=page&id=2 a /page-2/

RewriteCond %(QUERY_STRING) act=page RewriteCond %(QUERY_STRING) id=(\d+) RewriteRule .* /page/%1/? ]2.9. Reindirizza a versione mobile sito m.sito.ru

In questo esempio, controlliamo innanzitutto che l'utente abbia aperto il sito con dispositivo mobile(HTTP_USER_AGENT), quindi l'indirizzo del sito viene sostituito con m.URL

RewriteCond %(HTTP_HOST) ^(.*)$ RewriteCond %(HTTP_USER_AGENT) (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib| symbian|wireless|nokia|hand|mobi|telefono|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx |panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto |iphone|android) RewriteRule ^$ http://m.%1 2.10. Reindirizzamento da un sottodominio

Ad esempio, reindirizziamo da qualsiasi pagina del sottodominio poddomen.site.ru al dominio principale site.ru

RewriteCond %(HTTP_HOST) ^poddomen.site.ru$ RewriteRule ^(.*)$ http://site.ru%(REQUEST_URI) 3. Altri esempi con htaccess 3.1. Nega indirizzo IP e browser

Proibiremo l'apertura del sito a un utente che utilizza un browser IE con indirizzo IP 172.111.222.55

RewriteCond %(HTTP_USER_AGENT) MSIE RewriteCond %(REMOTE_ADDR) ^172\.111\.222\.55$ RewriteRule ^.*$ - [F] 3.2. Nega un file specifico

Disabilitiamo il file Disable_file.html per tutti:

negare da tutti 3.3. Consenti l'accesso da un IP

L'accesso sarà consentito solo da un indirizzo IP 172.111.222.55

ordine nega, consenti nega da tutti consenti da 172.111.222.55 3.4. Nega l'accesso da IP diversi

Nega l'accesso al sito da più indirizzi IP 172.112.222.55, 172.113.222.55, 172.114.*.*

ordine nega, consenti nega da tutti nega da 172.112.222.55 nega da 172.113.222.55 nega 172.114.*.* 3.5. Reindirizza l'URL da caratteri grandi a caratteri piccoli

Tutte le lettere maiuscole nell'URL verranno convertite in lettere minuscole.

RiscriviRule - RiscriviRule! - RiscriviRule ^([^A]*)A(.*)$ $1a$2 RiscriviRule ^([^B]*)B(.*)$ $1b$2 RiscriviRule ^([^C]*)C(.* )$ $1c$2 Regola di riscrittura ^([^D]*)D(.*)$ $1d$2 Regola di riscrittura ^([^E]*)E(.*)$ $1e$2 Regola di riscrittura ^([^F]*) F(.*)$ $1f$2 RewriteRule ^([^G]*)G(.*)$ $1g$2 RewriteRule ^([^H]*)H(.*)$ $1h$2 RewriteRule ^([^ I]*)I(.*)$ $1i$2 RewriteRule ^([^J]*)J(.*)$ $1j$2 RewriteRule ^([^K]*)K(.*)$ $1k$2 RewriteRule ^([^L]*)L(.*)$ $1l$2 RewriteRule ^([^M]*)M(.*)$ $1m$2 RewriteRule ^([^N]*)N(.*)$ $1n$2 Regola di riscrittura ^([^O]*)O(.*)$ $1o$2 Regola di riscrittura ^([^P]*)P(.*)$ $1p$2 Regola di riscrittura ^([^Q]*)Q( .*)$ $1q$2 Regola di riscrittura ^([^R]*)R(.*)$ $1r$2 Regola di riscrittura ^([^S]*)S(.*)$ $1s$2 Regola di riscrittura ^([^T] *)T(.*)$ $1t$2 RewriteRule ^([^U]*)U(.*)$ $1u$2 RewriteRule ^([^V]*)V(.*)$ $1v$2 RewriteRule ^( [^W]*)W(.*)$ $1w$2 RewriteRule ^([^X]*)X(.*)$ $1x$2 RewriteRule ^([^Y]*)Y(.*)$ $1y $2 RewriteRule ^([^Z]*)Z(.*)$ $1z$2 RewriteRule - [N] RewriteCond %(ENV:HASCAPS) TRUE RewriteRule ^/?(.*) /$1

Abbastanza punto importante durante la configurazione del sito. Un reindirizzamento configurato in modo errato può danneggiare gravemente i risultati di ricerca del sito. Le situazioni più comuni in cui è necessario utilizzare Permanent Redirect 301:

  • Modifica dell'indirizzo del sito: hai acquistato il tuo dominio e hai deciso di passare da site.example.com a site.ru
  • Specchi incollati: se il tuo sito è disponibile su www.site.ru e site.ru, motori di ricerca potresti considerarli come due siti diversi, quindi prima devi decidere il mirror principale (con www o senza www) e impostare i reindirizzamenti al mirror principale.
  • Quando una pagina (una o più) cambia indirizzo, ad un certo punto diventa chiaro che gli indirizzi http://example.com/index.php?option=com_content&task=view&id=23&Itemid=1 non sono buoni, e devono essere essere convertito in http://example.com/sport/news12, ma è un peccato perdere posizioni nell'indice dei motori di ricerca (visto che per loro sarà un nuovo articolo).
  • Un altro modo per gestire le pagine duplicate

Importante: se la pagina è stata spostata temporaneamente, utilizzare 302 Moved Temporarily. In questo caso le pagine non verranno unite e la pagina con il reindirizzamento potrà sempre essere ripristinata.

Reindirizzamento permanente 301 per apache (.htaccess)

È necessario inserire le regole subito dopo le righe:

RewriteEngine Su RewriteBase / # per troncare il percorso completo, dalla radice del server alla radice del sito

le regole stesse vengono specificate mediante espressioni regolari; ricordiamo la sintassi:

  • Metacaratteri, per specificare gruppi di caratteri o “etichette” in un modello:
    • ^ - segno di inizio linea,
    • $ - segno di fine riga,
    • ! - rifiuto,
    • \ - barra di escape, permette di considerare il metacarattere che lo segue come un carattere normale,
    • . - punto, denota qualsiasi carattere, ma solo uno,
    • () - raggruppamento.
  • I modificatori vengono posizionati dopo i caratteri regolari, i metacaratteri o i loro gruppi:
    • ? - il simbolo viene ripetuto 0 o 1 volta,
    • * - ripetuto da 0 a 65536 volte,
    • + - ripetuto da 1 a 65536 volte.
  • I flag definiscono opzioni aggiuntive per questa regola:
    • NC - (nocase) disabilita il controllo delle maiuscole e minuscole.
    • R - (reindirizzamento) interrompe il processo di conversione e restituisce il risultato al browser client come reindirizzamento a questa pagina (302, MOVED TEMPORARY).
      Con questo flag puoi specificare un codice risultato diverso, ad esempio R=301 restituirà un reindirizzamento con il codice 301 (MOVED PERMANENTLY). Come hai capito, questo è esattamente ciò di cui abbiamo bisogno.
    • L - (ultimo) interrompe il processo di conversione e il collegamento corrente è considerato definitivo.

Considera le situazioni più comuni:

RewriteCond %(HTTP_HOST) ^www\.(.*) RewriteRule ^(.*)$ http://%1/$1 RewriteCond denota la condizione che, se soddisfatta, eseguirà la regola RewriteRule. Reindirizzamento da index.php (html) alla pagina principale RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.(php|html|htm)\ HTTP/ RewriteRule ^(.*)index\.(php| html |htm)$ $1 Reindirizzamento quando si modifica la struttura del sito RewriteRule ^post/category/(.*)$ blog/category/$1 RewriteRule ^post/(.*)$ blog/post/$1 Reindirizzamento permanente 301 in PHP

Per informare il browser che la pagina richiesta deve essere reindirizzata all'indirizzo http://site.ru, eseguire i seguenti comandi:

Intestazione ("HTTP/1.1 301 spostato permanentemente"); header("Posizione: http://site.ru"); Uscita();

Reindirizzamento permanente 301 per nginx

Le regole di reindirizzamento sono descritte nella sezione server.

Reindirizzamento da www.site.ru al server site.ru ( ascolta 80; nome_server www.site.ru; riscrivi ^ http://site.ru$request_uri? permanente; )

O regola generale per tutti i siti:

Server ( nome_server ~^(?! www\.); riscrivi ^ http://www.$host$richiesta_uri permanente; )

Reindirizzamento da site.ru al server www.site.ru ( ascolta 80; nome_server site.ru; riscrivi ^ http://www.site.ru$request_uri? permanent; ) Reindirizzamento da index.php alla posizione della pagina principale = /index.php ( if ($request_uri = /index.php) ( riscrivi ^ http://$host? permanente;#301 reindirizzamento ) fastcgi_pass unix:/tmp/fastcgi.sock; fastcgi_index indice.php; fastcgi_param SCRIPT_FILENAME $document_root $ fastcgi_script_name; include fastcgi_params; )

Un codice di stato HTTP con stato 301 Moved Permanently indica che il documento richiesto è stato spostato in modo permanente nel nuovo URI specificato nel campo Posizione dell'intestazione.

Cosa serve?

Innanzitutto, quando si cambia il nome di dominio di un sito, è necessario avvisare i motori di ricerca del cambiamento dell'indirizzo del sito. In secondo luogo, per unire il nome del sito con e senza www. In terzo luogo, trasferire rapidamente il Page Rank su un nuovo sito.

PHP

Metodo uno

Metodo due

Perl

Metodo uno

$cgi = nuovo CGI; print $cgi->redirect("http://www.example.com/");

Metodo due

#!/usr/bin/perl -w usa strict; print "Stato: 301 spostato permanentemente\n"; print "Posizione: http://www.example.com/\n\n"; Uscita;

ASP.NET

Metodo uno

private void Page_Load(mittente oggetto, System.EventArgs e) ( Response.Status = "301 Moved Permanently"; Response.AddHeader("Location","http://www.example.com"); )

Metodo due (dalla versione 4.0)

RedirectPermanent("http://www.example.com");

ASP Ruby on Rails def do_something headers["Status"] = "301 Moved Permanently" reindirizza_to "http://www.example.com/" end ColdFusion Java (JSP) Apache Web Server (.htaccess)

Metodo uno (mod_alias, Reindirizzamento)

Reindirizzamento 301 / http://www.example.com

Metodo due (mod_alias, RedirectPermanent)

Reindirizzamento permanente / http://www.example.com

Metodo tre (mod_alias, Reindirizzamento permanente)

Reindirizzamento permanente / http://www.example.com

Metodo quattro (mod_alias, RedirectMatch)

RedirectMatch 301 ^(.*)$ http://www.example.com/

Metodo cinque (mod_rewrite)

Opzioni +SeguiSymLinks RewriteEngine Su RewriteBase / RewriteRule ^(.*)$ http://www.example.com/$1




Superiore