2012-11-07 11 views
7

Situazionemod_rewrite selezionare una cartella per il dominio

sto utilizzando Zend Framework, e quindi tentare di chiamare la cartella per indirizzo finisce in un fiasco e si ottiene l'errore: 'controllore non valido specificato'. Avevo bisogno di collegare altro forum all'applicazione in una cartella separata. Modifico file .htaccess come segue:

RewriteRule ^forum(.*)$ forum$1 [L] 

e per un po 'è stato un bene, fino a quando mi sono reso conto del fatto che la pagina esiste in due versioni a due domini (php riconosce dominio [.pl/.co.uk ] e seleziona la lingua). Così ho deciso di separare i forum come due moduli separati (per esempio, la cartella per il forum in versione polacca sarà: forum_pl, e per il Regno Unito sarà: forum_uk - due diversi forum)

Qual è il problema?

Ha bisogno di riscrivere file .htaccess a lavorare in questo modo:

IF: www.domena.pl/forum

ALLORA: aperto allo script dalla cartella/forum_pl

IF: www.domain.co.uk/forum

THEN: aperto allo script dalla cartella/forum_uk.

La cosa peggiore è che quando ho provato a correggere il file .htaccess aggiungendo RewriteCond, il primo reindirizzamento non funziona più correttamente, anche dopo il ritorno alla versione originale (mostrata sopra).

Per favore aiutami e scusami se non ho trovato le risposte già date in precedenza.

EDIT:

Prima di lavoro soluzione

RewriteRule ^forum_pl(.*)$ forum_pl$1 [L] 
RewriteRule ^forum_uk(.*)$ forum_uk$1 [L] 
RewriteCond %{HTTP_HOST} ^www.domena.pl(.*) [NC] 
RewriteRule ^forum(.*)$ forum_pl$1 [L] 
RewriteCond %{HTTP_HOST} ^www.domain.co.uk(.*) [NC] 
RewriteRule ^forum(.*)$ forum_uk$1 [L] 

E 'sembrare che vuole lavorare, ma, i problemi che ha bisogno di una soluzione è (TODO):

  1. Quando si type: www.domain.pl/forum ti porta a www.domain.pl/forum_pl/ ma se digiti: www.domain.pl/forum/ ti porta a www.do main.pl/forum/ (leggi da forum_pl). Come farlo funziona nella prima situazione, come in seconda.

EDIT:

mia ultima soluzione:

#FORUM 
#PL 
RewriteCond %{REQUEST_URI} ^/forum$ [NC] 
RewriteRule ^(.*)$ forum/ [R=301,L] 

RewriteRule ^forum_pl(.*)$ forum_pl$1 [L] 

RewriteCond %{REQUEST_URI} ^/forum_pl(.*)$ [NC] 
RewriteRule ^(.*)$ http://www.domena.pl/forum/ [R=301,L] #Dosen't work properly (?) 

RewriteCond %{HTTP_HOST} ^www.domena.pl(.*) [NC] 
RewriteCond %{REQUEST_URI} ^/forum(/?)$ [NC] 
RewriteRule ^forum[^/](.*)$ forum_pl/$1 #Dosen't work properly, but without it crash! 
RewriteRule ^forum(.*)$ forum_pl$1 [L] 
#UK 
RewriteCond %{REQUEST_URI} ^/forum_uk(.*)$ [NC] 
RewriteRule ^(.*)$ http://www.domain.co.uk/forum/ [R=301,L] #Dosen't work properly (?) 

RewriteCond %{HTTP_HOST} ^www.domain.co.uk(.*) [NC] 
RewriteCond %{REQUEST_URI} ^/forum(/?)$ [NC] 
RewriteRule ^forum[^/](.*)$ forum_uk/$1 #Dosen't work properly, but without it crash! 
RewriteRule ^forum(.*)$ forum_uk$1 [L] 

finale, versione di lavoro:

RewriteRule ^forum_pl(.*)$ forum_pl$1 [L] 
RewriteRule ^forum_uk(.*)$ forum_uk$1 [L] 

RewriteRule ^forum_pl(.*)$ http://www.domena.pl/forum$1 [R=301,L] # Not working! 
RewriteRule ^forum_uk(.*)$ http://www.domain.co.uk/forum$1 [R=301,L] # Not working! 

# Normalize URL first: 
RewriteRule ^forum$ forum/ [R=301,L] 

# redirect to polish version of web under forum_pl if on .pl TLD and 
# request is made to /forum/ (already normalized) 
RewriteCond %{HTTP_HOST} =www.domena.pl [NC] 
RewriteRule ^forum(.*)$ forum_pl$1 [L] 

# redirect to english version of web under forum_en in on .uk TLD and 
# request is made to /forum/ 
RewriteCond %{HTTP_HOST} =www.domain.co.uk [NC] 
RewriteRule ^forum(.*)$ forum_uk$1 [L] 

E 'un peccato che si può chiamare da la tua fronte ser forum_uk e forum_pl cartelle manualmente.

risposta

1

Non so se mi orientata correttamente nella tua domanda lunga con una certa evoluzione :-) Proviamo questo:

# Normalize URL first: 
RewriteRule ^forum$ forum/ [R=301,L] 

# redirect to polish version of web under forum_pl if on .pl TLD and 
# request is made to /forum/ (already normalized) 
RewriteCond %{HTTP_HOST} =www.domena.pl [NC] 
RewriteRule ^forum/(.*)$ http://www.domena.pl/forum_pl/$1 [R=301,L] 

# redirect to english version of web under forum_en in on .uk TLD and 
# request is made to /forum/ 
RewriteCond %{HTTP_HOST} =www.domain.co.uk [NC] 
RewriteRule ^forum/(.*)$ http://www.domain.co.uk/forum_uk/$1 [R=301,L] 

Se avete bisogno dei rewites ad agire in modo diverso, me lo faccia sapere

+0

Grazie per la risposta ! Ma alla fine non è esattamente quello che sto cercando. Ora funziona in questo modo: si apre www.domena.pl/forum www.domena.pl/forum_pl/ www.domain.co.uk/forum apre www.domain.co.uk/forum_uk/ I don' t voglio _pl e _uk nell'URL :) – MrTomAsh

+0

@ user1532418 quindi vuoi prendere script da cartelle forum_pl e forum_uk rispettivamente ma vuoi mantenere il/forum/nella barra degli indirizzi del browser? Se è così, è necessario rimuovere il 'R = 301' - lo reindirizza, quindi la barra degli indirizzi nel browser riflette la modifica –

+0

In qualche modo inizia a funzionare! Grazie! – MrTomAsh

Problemi correlati