2010-09-03 17 views
7

Ho bisogno di aiuto con l'url-riscrittura in .htaccess.Riscrittura dell'URL per diversi protocolli in .htaccess

Quindi il problema riguarda diversi protocolli: https e http. Lo scopo principale della riscrittura è rimuovere "www" dall'URL, ma il protocollo dovrebbe rimanere lo stesso di prima.

Per esempio, quando ho URL del tipo http : //www.domain.com/request, dovrebbe essere reindirizzato al http: //domain.com/request. Risolvo con queste regole:

RewriteBase/
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

Ma nel caso, in cui l'URL sembra https: //www.domain.com/request dovrebbe essere reindirizzato a https: //domain.com/ richiesta.

Sfortunatamente, la regola precedente reindirizzerà a http indipendentemente dal protocollo corrente.

Grazie in anticipo.

+0

possibile duplicato del [.htaccess reindirizzamento per non www HTTP e HTTPS] (http://stackoverflow.com/questions/2015159/htaccess-redirect-for-non -www-both-http-and-https) –

+0

Grazie per il link. Ho perso questa domanda durante la ricerca. Sfortunatamente, questo esemplare non funziona. Reindirizza https: // domain.com/request a http: // www.domain.com/request, invece di https: // www.domain.com/request. – Alex

risposta

8

Questo è abbastanza simile al possibile duplicato collegato, ma dal momento che uno forza www dove si desidera rimuoverlo, potrebbe giustificare una risposta separata.

provare qualcosa di simile:

RewriteCond %{HTTP_HOST} ^www\. 
RewriteCond %{HTTPS}s ^on(s)|off 
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$ 
RewriteRule^%1%3%{REQUEST_URI} [R=301,L] 
+2

Una spiegazione di queste regole sarà sicuramente utile come riferimento per chi cerca www per non reindirizzamento www. –

+0

seriamente, i creatori di apache API ... perché non hanno solo una variabile come "HTTP_PROTOCOL", e il secondo argomento segue lo stesso schema come tutti gli altri? '% RewriteCond {}^HTTP_PROTOCOL http $' o 'RewriteCond% {}^HTTP_PROTOCOL https $' invece di fare un'eccezione alla regola? Meno requisiti di conoscenza sono migliori. La conoscenza extra è buona, ma la conoscenza extra richiesta è cattiva. E devi conoscere la sintassi esatta e il valore. Chi indovina "^ on (s) | off". Freaken vecchi strumenti correlati a PHP ... – ahnbizcad

Problemi correlati