Discussione:
subdomains e rewriterule (apache)
(troppo vecchio per rispondere)
2008-12-06 11:41:33 UTC
Permalink
Ciao a tutti.

Ho un problemino con mod_rewrite e chiedo qui sperando di non essere
eccessivamente ot (ho cercato ma non ho trovato un ng su apache).

Ho un sito http://miosito.it

vorrei creare dei sottodomini tipo http://en.miosito.it/pagina.php?p=10
che rimandino ogni url a http://miosito.it/pagina.php?language=en&p=10

In aggiunta ho già un rewrite per le pagine html.

In conclusione vorrei che anche:

http://en.miosito.it/telefono-nokia-p-11.html

diventi

http://miosito.it/products.php?p=11&language=en

Posto che il secondo passaggio (rewrite delle .html) mi funziona... ho
problemi col primo.

Ho creato il subdomain en (en.miosito.it) e ho aggiunto nell'.htacces le
righe:

RewriteCond %{HTTP_HOST} en\.miosito\.it(.*) [NC]
RewriteRule .* http://miosito.it/$1?language=en [QSA]

(prima del rewrite delle html)

Ora qualsiasi link en.miosito.it/xxxxx va sulla homepage (nella lingua
giusta almenO!).

sapreste aiutarmi? grazie a tutti.
Andrea D'Amore
2008-12-06 14:03:16 UTC
Permalink
Post by
http://en.miosito.it/telefono-nokia-p-11.html
diventi
http://miosito.it/products.php?p=11&language=en
Immagino che la parte "p-11" sia fissa negli URI.
Post by
RewriteCond %{HTTP_HOST} en\.miosito\.it(.*) [NC]
RewriteRule .* http://miosito.it/$1?language=en [QSA]
(prima del rewrite delle html)
Ora qualsiasi link en.miosito.it/xxxxx va sulla homepage (nella lingua
giusta almenO!).
Puoi incollare tutte le regole che usi per mod_rewrite?
2008-12-06 21:17:10 UTC
Permalink
Post by Andrea D'Amore
Puoi incollare tutte le regole che usi per mod_rewrite?
ecco il mi .htaccess:

<IfModule mod_setenvif.c>
<IfDefine SSL>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</IfDefine>
</IfModule>

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} en\.miosito\.it(.*) [NC]
RewriteRule .* http://miosito.it/$1?language=en [QSA]

RewriteRule ^(.*)-p-(.*).html$
product_info.php?products_id=$2&%{QUERY_STRING}
Andrea D'Amore
2008-12-07 20:58:59 UTC
Permalink
Post by
RewriteCond %{HTTP_HOST} en\.miosito\.it(.*) [NC]
RewriteRule .* http://miosito.it/$1?language=en [QSA]
RewriteRule ^(.*)-p-(.*).html$
product_info.php?products_id=$2&%{QUERY_STRING}
Da quello che ho capito vuoi appoggiarti alla regola già esistente,
allora dovresti tradurre prima la lingua in un pattern simile a quello
che hai:
RewriteCond %{HTTP_HOST} ^([a-z][a-z])\.?miosito\.it [NC]
RewriteRule (.*).html http://miosito.it/$1-l-%1.html [N]

e poi puoi modificare la regola per gli html per tenere conto di un
elemento eventuale di tipo -l-en.html .
2008-12-07 23:15:45 UTC
Permalink
Post by Andrea D'Amore
Post by
RewriteCond %{HTTP_HOST} en\.miosito\.it(.*) [NC]
RewriteRule .* http://miosito.it/$1?language=en [QSA]
RewriteRule ^(.*)-p-(.*).html$
product_info.php?products_id=$2&%{QUERY_STRING}
Da quello che ho capito vuoi appoggiarti alla regola già esistente,
allora dovresti tradurre prima la lingua in un pattern simile a quello
RewriteCond %{HTTP_HOST} ^([a-z][a-z])\.?miosito\.it [NC]
RewriteRule (.*).html http://miosito.it/$1-l-%1.html [N]
Ho provato ma mi blocca tutto...

e non ho capito alcune cose della sintassi:

RewriteCond %{HTTP_HOST} ^([a-z][a-z])\.?miosito\.it [NC]

ad esempio dopo .it non ci va l'asterisco?
e poi non ho capito .?miosito

qui invece
RewriteRule (.*).html http://miosito.it/$1-l-%1.html [N]
non andrebbe
RewriteRule ^(.*).html$ http://miosito.it/$1-l-%1.html [N]

e non ho capito il %1...

Grazie comunque!
Andrea D'Amore
2008-12-08 08:00:49 UTC
Permalink
Post by
ad esempio dopo .it non ci va l'asterisco?
Se vuoi, ma basta che trovi [a-z][a-z]\.miosito\.it per sapere che sta
cercando un'altra lingua (ho immaginato un codice a due caratteri).
Potresti anche levare \.it
Post by
e poi non ho capito .?miosito
il punto può esserci o meno, dato che tu stesso usi http://miosito.it
Post by
e non ho capito il %1...
Ma la documentazione di mod_rewrite l'hai guardata?

%N è il backreference sul pattern dell'ultima RewriteCond piuttosto che
sul primo elemento della Rule.
2008-12-08 08:12:44 UTC
Permalink
Post by Andrea D'Amore
Post by
ad esempio dopo .it non ci va l'asterisco?
Se vuoi, ma basta che trovi [a-z][a-z]\.miosito\.it per sapere che sta
cercando un'altra lingua (ho immaginato un codice a due caratteri).
Potresti anche levare \.it
Post by
e poi non ho capito .?miosito
il punto può esserci o meno, dato che tu stesso usi http://miosito.it
Post by
e non ho capito il %1...
Ma la documentazione di mod_rewrite l'hai guardata?
%N è il backreference sul pattern dell'ultima RewriteCond piuttosto che
sul primo elemento della Rule.
grazie ancora! (l'ho guardata molto ma con scarso risulato..)

comunque non mi funzia ancora...

Loading...