Reindirizza .htaccess: reindirizza a un altro dominio e reindirizza a un'altra pagina

  1. Reindirizzamento .htaccess: reindirizzamento permanente, 301
  2. Come impostare un reindirizzamento su www (o senza www)
  3. Come creare .htaccess
  4. Il file .htaccess non funziona
  5. C'è qualche analogo di .htaccess in nginx?
  6. autori
  7. x64 (aka andi)

Buona domenica!

Molto spesso nei forum puoi trovare domande su .htaccess: il file di configurazione del server web Apache. Il principale ostacolo è che lo sviluppo non ha il compito di una comoda configurazione per l'utente finale (la distribuzione non include una shell per le installazioni visive usando checkbox, elenchi a discesa, ecc.), Ma gli amministratori del server affrontano questa attività in modo notevole, accontentandosi di "mana" (dal team di Linux - man - un rapido tutorial dagli sviluppatori, o in questo caso dai professionisti ai professionisti).

Nella maggior parte dei casi, sono necessarie semplici manipolazioni: reindirizzamento incondizionato a un altro sito o reindirizzamento da un luogo a un altro (ad esempio, quando l'URL della sezione è cambiato). E ogni persona inizia a credere che non ci siano assolutamente problemi da nessuna parte, ed è addirittura inutile cercare una soluzione su Internet e cercare nel forum. Vediamo cosa non sono realmente questi problemi.

Vediamo cosa non sono realmente questi problemi

Reindirizzamento .htaccess: reindirizzamento permanente, 301

Questa cosa ha nomi diversi. Neponyatki può causare forse quel numero - perché è 301? L'essenza risiede nel protocollo HTTP stesso, che risponde alle richieste dei client con uno specifico codice di stato. Il codice 404 non trovato è noto a quasi tutti. Il codice 200 OK è quasi sconosciuto, ma significa che tutto è in ordine e il documento verrà mostrato nel browser. Ma il codice 301 spostato in modo permanente significa che il documento è finalmente passato a un nuovo indirizzo. Questo è ciò che viene spesso chiamato redirezione, sebbene il pool di risposta totale sia designato come - 3xx: Reindirizzamento .

Apache ha diverse opzioni per i reindirizzamenti. Il modulo mod_rewrite fornisce un meccanismo eccellente per lavorare con i reindirizzamenti, e in futuro lo userò negli esempi. Il modulo mod_alias ha anche direttive per i reindirizzamenti da un indirizzo specifico o da un indirizzo che corrisponde all'espressione regolare:
Reindirizza permanente / http://newsite.ru/
RedirectMatch permanente. * Http://newsite.ru/
Ma mod_rewrite ha opzioni aggiuntive per il reindirizzamento, quindi è meglio usarlo (IMHO).

In generale, per un reindirizzamento esterno incondizionato (chiamiamolo utente), in cui il browser reindirizza automaticamente a un'altra pagina, solitamente impercettibilmente per l'utente (la barra degli indirizzi cambia), è possibile inserire tale codice in .htaccess:
RewriteEngine On
RewriteRule. * Http://newsite.ru/ [L, R = permanente]
Qui, la prima riga include il meccanismo del modulo mod_rewrite , che è autorizzato a fare qualsiasi cosa con gli indirizzi. Chiamiamo questa conversione URL in base alle condizioni al volo. La seconda riga definisce direttamente la regola per la conversione, nell'esempio precedente tutte le richieste verranno reindirizzate a http://newsite.ru/. Le bandiere sono poste tra parentesi quadre: L - ultima (ultima) regola, R - tipo di reindirizzamento (reindirizzamento), indicato come R = codice, dove il codice è una designazione alfabetica o numerica (permanente o 302).

In effetti mod_rewrite è una cosa molto utile, perché è per questo che molti motori utilizzano attivamente il cosiddetto CNC (Human URL Understandable). Se non conosci questo termine, ti spiegherò con un esempio. Articolo su motori gratuiti per il sito ha l'indirizzo: https://a-panov.ru/2014/11/free-cms/

Guardando questo URL, è immediatamente chiaro che l'articolo è stato pubblicato a novembre 2014. Rimuovendo il titolo con una barra finale - https://a-panov.ru/2014/11/ - riceveremo un elenco di tutte le pubblicazioni per novembre. Indirizzi normali, digitare:

https://a-panov.ru/?p=389

nessuna cordialità speciale. Vedendo un simile indirizzo, non si può dire della pagina su cui egli conduce, assolutamente nulla.

Questo metodo è utile quando non ti interessa quale pagina del nuovo sito linkare. Ma se ci si sposta in un altro dominio, è consigliabile reindirizzare tutte le richieste mantenendo gli indirizzi. Per fare ciò, utilizzare il seguente codice:
RewriteRule ^. * $ Http://newsite.ru/$0 [QSA, L, R = permanente]
Il nuovo flag QSA salverà anche i parametri che possono essere trovati negli indirizzi dopo il punto interrogativo. Nell'esempio già familiare:

https://a-panov.ru/?p=389

se metto il codice in .htaccess sopra, allora ci sarà un reindirizzamento all'indirizzo http://newsite.ru/?p=389 che senza questo flag non esisterebbe.

Di seguito, tratterò la direttiva di inclusione della trasformazione:
RewriteEngine On
ricorda: se usi il meccanismo mod_rewrite, allora tutte le condizioni / conversioni devono essere eseguite dopo questa direttiva. Per disabilitare la seguente riga viene utilizzato:
RewriteEngine Off
di conseguenza, per ogni regola non è necessario "trasformare" continuamente le trasformazioni - inizia automaticamente, subito dopo la prima direttiva.

Come impostare un reindirizzamento su www (o senza www)

Tali reindirizzamenti sono necessari per i casi in cui il sito è disponibile sulle opzioni nsite.ru e www.nsite.ru, in questo caso, i motori di ricerca li considerano duplicati e possono scegliere una delle opzioni come specchio principale , o nella ricerca ci saranno opzioni da entrambi i domini. In generale, questo è un fattore negativo quando si classifica un sito.

Opzione più semplice per un dominio. Il reindirizzamento viene eseguito dal sottodominio www.site.ru a site.ru:
RewriteCond% {HTTP_HOST} ^ www \ .nsite \ .ru $
RewriteRule. * Http://nsite.ru/$0 [QSA, L, R = permanente]
È qui che è apparsa la nuova direttiva RewriteCond , che stabilisce le condizioni in base alle quali i reindirizzamenti dovrebbero funzionare: le regole RewriteRule . La condizione, in questo caso, il nome di dominio corrispondente a www.nsite.ru (nelle espressioni regolari, il simbolo del punto significa "qualsiasi carattere", quindi è consigliabile proteggerlo con una barra rovesciata).

Il reindirizzamento inverso è anche molto semplice:
RewriteCond% {HTTP_HOST} ^ nsite \ .ru $
RewriteRule. * Http://www.nsite.ru/$0 [QSA, L, R = permanente]
Entrambe le opzioni funzionano, ma hanno un piccolo svantaggio - per ogni nuova configurazione è necessario sostituire il dominio nsite.ru con il proprio. È possibile fare un'opzione unica? Facile!

Reindirizza da qualsiasi sottodominio www:
RewriteCond% {HTTP_HOST} ^ www \. (. *) $
RewriteRule. * Http: //% 1 / $ 0 [QSA, L, R = permanente]

Reindirizza a un sottodominio con www:
RewriteCond% {HTTP_HOST}! ^ Www \.
RewriteRule. * Http: //www.% {HTTP_HOST} / $ 0 [QSA, L, R = permanente]

% {HTTP_HOST} - dominio corrente

Come creare .htaccess

Anche queste domande sorgono. Il problema è che Explorer standard (l'applicazione in Windows, che è responsabile dell'interfaccia grafica) non consente di creare file che iniziano con un punto (creazione di file o cartelle facendo clic con il tasto destro sul desktop o in una finestra e selezionando l'azione desiderata dall'elenco Crea ). Ma c'è una via d'uscita: apri il registratore di blocco note standard, seleziona File → Salva come ... nel menu e specifica .htaccess come nome del file salvato, dopodiché verrà creato.

Il file .htaccess non funziona

Ci sono casi in cui le direttive da un file non funzionano. Questo di solito è causato dal fatto che il supporto .htaccess è disabilitato nella configurazione di Apache, per la quale la direttiva è responsabile:
AllowOverride none

Questo di solito viene fatto per aumentare un po 'la velocità - in questo caso, il web server non cerca e analizza .htaccess.

È anche possibile che Apache non venga utilizzato sul server, ad esempio, IIS è il "guest" principale su Windows hosting. Per chiarimenti, contatta il supporto del tuo hoster.

C'è qualche analogo di .htaccess in nginx?

Un'altra domanda abbastanza frequente. In questo server Web, questo non è possibile. Tuttavia, questo di solito non è richiesto. Il fatto è che nginx viene solitamente installato come un frondend, cioè accetta ed elabora tutte le richieste che esegue se stesso o reindirizza al back-end, che può essere eseguito da Apache, che può essere ulteriormente configurato usando .htaccess.

autori

non online 1 giorno

x64 (aka andi)

Commenti: 2834 Pubblicazioni: 394 Registrazione: 02-04-2009