- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- problema con mod_rewrite e ojs
-
problema con mod_rewrite e ojs
Salve, sto perdendo la testa per la trasformazione di un indirizzo.
Il caso è questo, c'è un'organizzazione: www.institution.orgquesta offre un servizio di e-journals tramite un software che si chiama OJS:
Il server che ospita il servizio ha un indirizzo tipo questo:Ed ogni Rivista ha un link come questo:
www.ojs.institution.org/index.php/Journal1
www.ojs.institution.org/index.php/Journal2
etc etcChe non è una directory fisica ma una chiamata di funzione php interna.
Mi è stato chiesto di trasformare i link alle riviste in questo:
www.Journal1.institution.org
www.Journal2.institution.orgetc etc
Quindi, prima di tutto ho chiesto all'amministratore di www.institution.org di creare dei domini di secondo livello per ogni Rivista
www.Journal1.institution.org
www.Journal2.institution.org
etc etc
E puntarli sul server che ospita il software: www.ojs.institution.orgOra devo far si che www.Journal1.institution.org punti:
a www.ojs.institution.org/index.php/Journal1Ho provato con I Virtual Servers, ma ad ogni giornale non corrisponde una vera e propria directory, e, se ho capito bene non posso indirizzare la direttiva a una chiamata di funzione php (ovvero: www.ojs.institution.org/index.php/Journal).
Peraltro il programma ha un sistema di configurazione interno che modifica tutti i link interni sull'indirizzo riscritto.
E' come una catena, e mi manca solo l'anello centrale.
Sto provando con mod_rewrite ma sono in panne. Se qualcuno mi aiuta è possibile che ci esce anche un piccolo compenso da parte dell'organizzazione.
Grazie
Orazio
-
Ciao, forse ti serve qualcosa de tipo:
RewriteCond %{HTTP_HOST} ^www\.(.*)\.institution\.org$ RewriteRule .* http://www.ojs.institution.org/index.php/%1 [R, L]
potrebbe essere non corretto!
perdonami sono di fretta, fra un paio d'ore o domattina ti rispondo un po piu correttamenteok editato per correggere
Dovrebbe fare a caso tuo
Ciao
-
Aggiungo ancora:
se tutti i domini www.nomegiornale.example.org hanno la stessa document root, puoi addirittura utilizzare le banali regole di rewrite tipo:RewriteCond %{HTTP_HOST} ^www\.(.*)\.institution\.org$ RewriteCond %{REQUEST_URI} ^(.*)$ RewriteRule .* /index.php/%1/$1 [QSA, L]
modificabile a seconda delle esigenze
ciao
-
se i giornali son tanti puoi mettere una wildcard sul dominio e seguire queste istruzioni
-
Grazie infinite, ho smanettato con i consigli che mi avete dato e leggendo un po' di documentazione ho fatto questo:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)\.institution\.org$ RewriteRule .* /index.php/%1/$1 [QSA,L] ```E funziona! Nel senso che: [www.journal1.institution.org](http://www.journal1.institution.org) mi porta effettivamente sulla pagina del journal1 ovvero quella che senza rewrite è data dall'url: http://www.ojs.institution.org/index.php/journal1 Solo che c'è un problema, non funzionano più i fogli di stile, non si vedono le immagini, non funzionano i link. Controllo nell'html prodotto, il link al foglio di stile appare così: http://www.journal1.institution.org/styles/common.css mentre il path reale è: http://www.ojs.institution.org/styles/common.css Se metto uno di questi due indirizzi nel browser, ottengo la pagina di index del journal1 o di ojs, penso sia il modo di comportarsi del software quando avviene una chiamata su un persorso che lui non riconosce. Se invece metto il secondo indirizzo senza www: http://ojs.institution.org/styles/common.css ottengo il listato del css. A questo punto non so se è un problema del CMS o ancora del mod_rewrite. Grazie di cuore Orazio
-
chiaramente essendoti cambiato l'indirizzo base e se usi url relativi non funziona niente..
il metodo più veloce per risolvere è mettere in <head>
<base href="http://www.ojs.institution.org/" />
-
la soluzione di osvi è la più rapida, ma se vuoi smanettrare ancora con l'htaccess puoi aggiungere questo:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)\.institution\.org$ RewriteCond %{HTTP_HOST} !^www\.ojs\.institution\.org$ RewriteRule .* /index.php/%1/$1 [QSA,L]
cosi in pratica non ti rtiscrive gli url di ojs, in quanto non è un giornale
Ciao
-
Grazie, sto facendo dei tentativi ma ancora non si risolve il problema.
Questo perchè nella head dei files compaiono alcune variabili di SMARTY che richiamano il path riscritto e non quello reale con cui funzionano CSS e Immagini.Ho scritto al forum di OJS:
How can I hack the $baseUrl and the $cssUrl variables modifying statically the first part of URL to: "www.ojs.intitution.org"?e la risposta è stata:
you should be able to get your static content (e.g. CSS) working with a mod_rewrite rule that supercedes your existing rules for cases where the index.php script is not specified.Sono piuttosto demoralizzato.
grazie ancora
-
Questa soluzoine puo andare bene?
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)\.institution\.org$ RewriteCond %{HTTP_HOST} !^www\.ojs\.institution\.org$ #evitiamo di riscrivere tutto quello che non ha index.php nell'url RewriteCond %{REQUEST_URI} !/index\.php.* RewriteCond %{REQUEST_URI} ^(.*)$ RewriteRule .* /index.php/%1/$1 [QSA,L]
-
Thesee grazie,
scusa se non ho risposto subito, ma ho preferito studiare ancora un po' e far frutto dei consigli giunti fin ora e ... la regola esatta sempre essere questa:RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)\.institution\.org$ RewriteCond %{HTTP_HOST} !^www\.ojs\.institution\.org$ RewriteCond %{REQUEST_URI} !^/(public|templates|style)/.*$ RewriteRule (.*) /index.php/%1/$1 [QSA,L] ```I path in: RewriteCond %{REQUEST_URI} !^/(public|templates|style)/.*$ sono specifici del software ojs per i settaggi alle riviste E per ora sempbra funzionare!! Non abbiamo sperimentato il comportamento in fase di Admin, ti farò sapere. GRAZIE! GRAZIE! Grazie per l'aiuto!
-
ottimo buon proseguimento