htaccess o reindirizzamento per nascondere parte di un link?

8 feb 2011, 19:22:01
Visualizzazioni: 834
Voti: 1

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!

0
Tutte le risposte alla domanda 1
11

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' );
}
8 feb 2011 20:41:11
Commenti

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?

RodeoRamsey RodeoRamsey
8 feb 2011 22:25:26

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 EAMann
8 feb 2011 22:43:27

@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 Rowell Peter Rowell
9 feb 2011 00:23:31

@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 EAMann
9 feb 2011 00:32:42

@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! :)

RodeoRamsey RodeoRamsey
9 feb 2011 00:35:38

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 EAMann
9 feb 2011 00:40:00

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

Peter Rowell Peter Rowell
9 feb 2011 00:45:24

@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.

RodeoRamsey RodeoRamsey
9 feb 2011 01:12:46

Non che io sappia.

EAMann EAMann
9 feb 2011 01:13:27

@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?

a_fan a_fan
29 ago 2011 17:11:36

@Affan Non sono sicuro di cosa tu stia chiedendo. Per favore fai una nuova domanda con maggiori dettagli...

EAMann EAMann
29 ago 2011 18:43:06
Mostra i restanti 6 commenti