htaccess o reindirizzamento per nascondere parte di un link?
Ho installato un plugin per la rotazione degli annunci per visualizzare alcune pubblicità sul mio sito, ma il plugin è codificato in modo che utilizzi il percorso completo della directory nel link di conteggio degli annunci. Vorrei sapere se c'è qualcosa di semplice da inserire nel mio htaccess per mascherare il link. Ad esempio:
http://mysite.com/wp-content/plugins/ad-rotating-plugin/rotate.php?trackerid=1
deve apparire come:
http://mysite.com/rotate.php?trackerid=1 (in realtà qualsiasi variazione di questo va bene, semplicemente non voglio che venga mostrato il percorso completo wp-content/plugins/ nel link).
Ho provato alcuni plugin ma non ottengo i risultati desiderati. Per ricapitolare, voglio che il link APPAIA come quello in basso, ma quando viene cliccato, porti a quello in alto, e ho bisogno che il trackerid=# rimanga l'id generato, quindi voglio solo mascherare parte del link. C'è qualcosa che posso inserire nel mio htaccess per fare questo?
Grazie!

Quello che devi fare è configurare un rewrite personalizzato. Questo può trasformare un URL come http://site.com/rotate/1
in http://site.com/wp-content/plugins/ad-rotating-plugin/rotate.php?trackerid=1
Ecco del codice non testato che potrebbe aiutarti:
<?php
/*
Plugin Name: Il Tuo Plugin
Plugin URI:
Description:
Version: 0.1
Author:
Author URI:
*/
// Aggiungi la regola di rewrite e svuota la cache all'attivazione del plugin
register_activation_hook( __FILE__, 'ad_rotate_activate' );
function ad_rotate_activate() {
ad_rotate_rewrite();
flush_rewrite_rules();
}
// Svuota la cache alla disattivazione del plugin
register_deactivation_hook( __FILE__, 'ad_rotate_deactivate' );
function ad_rotate_deactivate() {
flush_rewrite_rules();
}
// Crea una nuova regola di rewrite
add_action( 'init', 'ad_rotate_rewrite' );
function ad_rotate_rewrite() {
add_rewrite_rule( 'rotate/([^/]+)','/wp-content/plugins/ad-rotating-plugin/rotate.php?trackerid=$matches[1]','top' );
}

Ho provato ad aggiungere questo al mio file functions.php e non sembra aver fatto nulla. Devo aggiornare i miei permalink? O questo deve essere un file di plugin separato?

Il codice che ho scritto sopra era scritto come un plugin... non come codice da inserire in un file functions.php
... visto che stai già lavorando con un plugin, ho dato per scontato che volessi includere il codice di riscrittura nel plugin. Ma devi almeno fare la chiamata add_rewrite_rule()
e poi aggiornare le regole di riscrittura.

@EAMann: Questo aggiunge la regola alla voce rewrite_rules
in wp_options
? Ho guardato il codice in wp-includes/rewrite.php
e santo cielo se riesco a dire con certezza una cosa o l'altra. Se viene salvata, cosa impedisce alla regola di essere salvata un sacco di volte? Le menti curiose vogliono sapere!

@Peter add_rewrite_rule()
aggiunge la regola a un array che viene indicizzato in base all'espressione regolare definita sopra (rotate/([^/]+)
). Quindi non può essere aggiunta più volte. Dai un'occhiata al metodo add_rule()
della classe WP_Rewrite (/wp-includes/rewrite.php
intorno alla riga 1797).

@EAMann, grazie per la chiarificazione. Quindi questo funzionerebbe come plugin separato, o dovrei inserirlo direttamente nei file del plugin che sto utilizzando? Ho provato ad aggiungerlo come plugin autonomo ma non ho ottenuto alcuna modifica ai link originali. Sono principalmente un front-end designer quindi queste cose mi sono un po' estranee. Grazie! :)

Non è pensato per modificare alcun link. Quello che fa il riscrittore di URL di WordPress è mappare le richieste da un URL a un altro. Quindi una richiesta a http://site.com/rotate/1
mostrerà effettivamente il contenuto da http://site.com/wp-content/plugins/ad-rotating-plugin/rotate.php?trackerid=1
. Devi anche avere i permalink attivati altrimenti tutto questo è inutile.

@EAMann: Quindi l'array a cui viene aggiunto non viene mai scritto nel database, corretto?

@EAMann, sì ho i pretty permalink attivati, ma quello che mi serve è che gli URL vengano riscritti al caricamento della pagina, o mascherati in qualche modo così che quando la pagina viene caricata, non VEDANO il link più lungo, ma che in realtà vedano il link più corto. Mi dispiace se non sono stato chiaro.

@eamann Voglio qualcosa di simile a questo. La richiesta viene reindirizzata a rotate.php ma trovo $_GET['tracker']=$matches[1]
invece di $_GET['tracker']=1
. Hai incontrato questo problema? Qualche suggerimento?
