vBulletin 4: impostare un sottodominio per ogni username con vBSEO

Una delle novità introdotte con vBulletin 4 è la possibilità di usare sottodomini per separare le sezioni del blog, cms e forum. In questo articolo andremo oltre, cioè faremo in modo che ogni utente abbia un suo sottodominio personale basato sul proprio username verso dal quale si potrà accedere alla pagina del profilo e del blog. Tutto questo grazie anche all’aiuto di vBSEO.

vbulletin blog in un sottodominioQuello che dobbiamo fare quindi è creare un dominio di terzo livello (ossia un sottodominio del tipo nickname.1e2.it) per ogni utente in modo che il nickname, ossia il nome utente, diventi automaticamente il dominio (creare manualmente un sottodominio per ogni utente è impensabile!).

In pratica, se il mio nome utente è “Galerio”, avrò un indirizzo personale come questo:
http://galerio.1e2.it
E il mio blog personale sarà alla pagina http://galerio.1e2.it/blog e così sarà per ogni utente del forum.

Vi spiego brevemente come fare a impostare un sottodominio per ogni utente per vBulletin 4.

Per prima cosa dobbiamo impostare i DNS del dominio principale in modo che qualsiasi sottodominio porti al server dove abbiamo il sito:
* A ip-del-server

A seconda del pannello di configurazione del vostro dominio, potreste dover usare un altro carattere jolly per indicare “qualsiasi nome”. Nel mio caso ho usato un asterisco che va scritto nel campo in cui si mettono i nomi dei sottodomini che si vogliono creare, come www o ftp e così via. Alcuni account potrebbero limitare l’uso dei sottodomini e quindi potrebbero non permettervi tale impostazione. Mettendo questa regola per ultima, rispetteremo le altre regole per gli altri sottodomini nel caso in cui questi puntino altrove. Ma se tutti puntano allo stesso server, allora potremo anche usare solo l’asterisco e cancellare tutte le altre.

Le seconda configurazione va fatta sul server nel file di configurazione di Apache per il vostro sito web. Appena sotto la riga
ServerName 1e2.it dobbiamo aggiungere l’alias per ogni sottodominio in modo che puntino così tutti alla root del sito web principale:
ServerAlias *.1e2.it

Apache deve avere attivo il modulo ModRewrite. Se non avete accesso diretto al vostro server, potreste chiederlo a un amministratore del vostro servizio di hosting di fare la modifica per voi.

Se invece utilizzate un pannello di controllo come cPanel o Plesk, dovrete allora entrare nella pagina di configurazione del dominio e creare un nuovo sottodominio usando sempre come nome un “*” che sta a indicare “qualsiasi nome” e far puntare tale sottodominio verso la root del sito, cioè la cartella dove si trova l’homepage. Non sempre i pannelli di controllo supportano questa opzione.

A questo punto, qualsiasi sottodominio noi scriviamo, vedremo comparire la pagina iniziale del nostro sito, quindi sia 1e2.it che www.1e2.it che blablabla.1e2.it punterano alla stessa identica pagina.

Se il nostro vBulletin si trova dunque già nella root, allora possiamo saltare il prossimo passaggio, altrimenti dobbiamo creare o modificare il file htaccess nella root del sito e inserire queste righe:

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(.+)\.1e2\.it
RewriteRule ^.*$ forum/vbseo.php [L,QSA]
RewriteRule ^ajax\.php(.*) forum/ajax.php$1 [L]

Ovviamente questo codice si riferisce a 1e2.it. Le righe dicono che (prima riga) se la richiesta per la pagina arriva da un sottodominio diverso da www allora (seconda riga) memorizza il nome del sottodominio e poi (terza riga) passalo al file vbseo.php che si trova nella directory /forum che si occuperà di processarlo. Ovviamente bisogna avere vBSEO installato. Se abbiamo altri sottodomini già impostati che vogliamo escludere (che magari usiamo come CDN o per altre pagine del sito) allora dobbiamo aggiungere dopo la prima riga un’altra identica cambiando solo www con il nome del sottodominio che volete sia escluso. La quarta riga serve per ovviare a un problema di lettura del file ajax.php che si viene a creare modificando alcuni file js di vbulletin cher vedremo in seguito. Se nella root del sito avete già un file ajax.php allora le cose si complicano e bisogna adottare una strategia differente che non tratterò qui ora.

Passiamo ora a vBulletin ed entriamo nel pannello di configurazione di vBSEO. Andiamo nella scheda “Impostazioni Avanzate” per URL Rewrite Settings del Blog. In “Blog Home” scegliamo “custom” e scriviamo nella campo vuoto l’indirizzo che vogliamo dare alla homepage generale del blog (quella che raccoglie tutti i blog). Ad esempio possiamo scrivere (con lo slash finale) http://blog.1e2.it/ Poi, sempre nel campo custom, in “Blog” possiamo dare l’istruzione per usare il nome utente come sottodominio in questo modo: http://[user_name].1e2.it/blog . Non è possibile purtroppo eliminare /blog dall’indirizzo per cui l’homepage del blog personale di ciascun utente sarà nomeutente.1e2.it/blog. Adesso riempiamo anche tutti gli altri campi “custom” sempre con lo stesso criterio: dove troviamo nelle selezioni predefinite il tag [user_name] noi possiamo usare il campo custom scrivendo (ad esempio nell’opzione successiva) http://[user_name].1e2.it/blog/index[page].html e così via per tutto il resto.

Adesso spostiamoci nella scheda “Impostazioni Avanzate” di Memeber’s profile URLs in URL Rewrite Settings e anche qui agiamo sul campo custom di Member Profile scrivendo http://[user_name].1e2.it/ così che a tale indirizzo compaia la pagina del profilo dell’utente dalla quale si può raggiungere il blog, vedere i messaggi scritti dall’utente, lasciare una nota e così via. vBullettin permette di personalizzare tale pagina (e anche il blog) con sfondi differenti e stili differenti per ogni utente. Come abbiamo fatto per il blog, riempiamo tutti gli altri spazi “custom” con le regole che vogliamo.

Arrivati a questo punto sembrerebbe tutto fatto, ma vBulletin (per ora nella versione 4.1.2) ha un bug che impedisce ai Javascript Ajax di funzionare se richiamati da indirizzi differenti rispetto a quello principale. Il che significa che se vogliamo sfruttare Ajax nei nostri sottodomini, non possiamo farlo. Si tratta per fortuna di un bug noto, ma che purtroppo non vede ancora una soluzione ufficiale se non quella di disattivare completamente tutte le funzioni Ajax.

Ovviamente noi non vogliamo disattivare Ajax, quindi per risolvere il problema dobbiamo modificare i file .JS che richiamano le funzioni Ajax per il Blog e per la pagina del profilo che sono:

forum/clientscript/blog_ajax_calendar.js
forum/clientscript/blog_ajax_latest.js
forum/clientscript/blog_ajax_rate.js
forum/clientscript/blog_ajax_tagsugg.js
forum/clientscript/blog_dragdrop.js
forum/clientscript/vbulletin-core.js
forum/clientscript/vbulletin_ajax_tageditor.js
forum/clientscript/vbulletin_profilefield_edit.js
forum/clientscript/vbulletin_textedit.js

e cercare all’interno di essi:

asyncRequest("POST","

dove dopo l’ultima virgoletta c’è il nome di un file php come “ajax.php” o altri e modificarli aggiungendo uno slash davanti al nome del file php trovato (ad esempio quindi “/ajax.php”) e appena dopo la virgola (quella che precede il nome del file php) aggiungere il codice window.location.protocol + "//" + window.location.hostname + con uno spazio prima e dopo. Ad esempio:

asyncRequest("POST","ajax.php"

diventa

asyncRequest("POST", window.location.protocol + "//" + window.location.hostname + "/ajax.php"

Se dopo asyncRequest("POST" non trovate un nome di file php, allora passate al prossimo risultato della ricerca.

Se volete anche mettere il CMS o il Forum in un sottodominio, allora dovrete modificare anche altri file JS:

forum/clientscript/blog_ajax_calendar.js
forum/clientscript/blog_ajax_latest.js
forum/clientscript/blog_ajax_rate.js
forum/clientscript/blog_ajax_tagsugg.js
forum/clientscript/blog_dragdrop.js
forum/clientscript/cms_ajax_rate.js
forum/clientscript/cms_textedit.js
forum/clientscript/vbulletin-ajax-reputation.js
forum/clientscript/vbulletin-ajax-threadlist.js
forum/clientscript/vbulletin-ajax-threadrate.js
forum/clientscript/vbulletin-core.js
forum/clientscript/vbulletin-read-marker.js
forum/clientscript/vbulletin_ajax_imagereg.js
forum/clientscript/vbulletin_ajax_nameverif.js
forum/clientscript/vbulletin_ajax_quote.js
forum/clientscript/vbulletin_ajax_search.js
forum/clientscript/vbulletin_ajax_tageditor.js
forum/clientscript/vbulletin_ajax_taglist.js
forum/clientscript/vbulletin_ajax_threadrate.js
forum/clientscript/vbulletin_ajax_wolresolve.js
forum/clientscript/vbulletin_asset.js
forum/clientscript/vbulletin_cpcms_layout.js
forum/clientscript/vbulletin_cphome_scripts.js
forum/clientscript/vbulletin_global.js
forum/clientscript/vbulletin_group_read_marker.js
forum/clientscript/vbulletin_imageup.js
forum/clientscript/vbulletin_post_loader.js
forum/clientscript/vbulletin_profilefield_edit.js
forum/clientscript/vbulletin_quick_edit.js
forum/clientscript/vbulletin_quick_reply.js
forum/clientscript/vbulletin_read_marker.js
forum/clientscript/vbulletin_settings_validate.js
forum/clientscript/vbulletin_textedit.js

E’ importantissimo però che ora impediate ai vostri utenti di usare come nickname i nomi come www o sql o ftp o ssh o smtp o pop3 e tutti gli altri nomi che già avete assegnato a sottodimini esistenti. Quindi andate nelle opzioni di registrazione utente di vBulletin e aggiungete tutti i nomi vietati che gli utenti non possono scegliere al momento della registrazione.

Riassumendo ora abbiamo questa configurazione:

www.1e2.it (Homepage del sito)
www.1e2.it/forum (home del forum)
blog.1e2.it (home generale dei blog degli utenti)
username.1e2.it (pagina del profilo personale di ciascun utente)
username.1e2.it/blog (home del blog personale di ciascun utente)

Il tutto con ogni sottodominio che si creerà automaticamente per ogni vostro utente già esistente o futuro.

GD Star Rating
loading...

Ricerche correlate:

Ti può interessare anche: