htaccess sau redirect pentru a ascunde o parte din link?

8 feb. 2011, 19:22:01
Vizualizări: 834
Voturi: 1

Am un plugin de rotire a anunțurilor instalat pentru a afișa câteva reclame pe site-ul meu, dar plugin-ul este codat astfel încât utilizează directorul complet în link-ul de numărare a anunțurilor. Aș vrea să știu dacă există ceva simplu de introdus în htaccess pentru a ascunde link-ul. De exemplu:

http://mysite.com/wp-content/plugins/ad-rotating-plugin/rotate.php?trackerid=1

trebuie să arate astfel:

http://mysite.com/rotate.php?trackerid=1 (oricare variație a acestuia este acceptabilă, nu vreau să se vadă întregul director wp-content/plugins/ în link).

Am încercat câteva plugin-uri dar nu am obținut rezultatele dorite. Pentru a recapitula, vreau ca link-ul să fie AFIȘAT ca cel de jos, dar când este apăsat, să ducă la link-ul de sus, și am nevoie ca trackerid=# să rămână ID-ul generat, deci vreau să ascund doar o parte din link. Există ceva ce pot pune în htaccess pentru a face asta?

Mulțumesc!

0
Toate răspunsurile la întrebare 1
11

Ceea ce trebuie să faci este să configurezi o rescriere personalizată. Aceasta poate transforma ceva de genul http://site.com/rotate/1 în http://site.com/wp-content/plugins/ad-rotating-plugin/rotate.php?trackerid=1

Iată un cod netestat care te poate ajuta:

<?php
/*
Plugin Name: Pluginul Tău
Plugin URI: 
Description: 
Version: 0.1
Author: 
Author URI: 
*/

// Adaugă regula de rescriere și resetează regulile la activarea pluginului
register_activation_hook( __FILE__, 'ad_rotate_activate' );
function ad_rotate_activate() {
    ad_rotate_rewrite();
    flush_rewrite_rules();
}

// Resetează regulile la dezactivarea pluginului
register_deactivation_hook( __FILE__, 'ad_rotate_deactivate' );
function ad_rotate_deactivate() {
    flush_rewrite_rules();
}

// Creează o nouă regulă de rescriere
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
Comentarii

Am încercat să adaug asta în fișierul meu functions.php și nu părea să facă nimic. Trebuie să resetez permalinkurile? Sau acest cod trebuie să fie într-un fișier de plugin separat?

RodeoRamsey RodeoRamsey
8 feb. 2011 22:25:26

Codul pe care l-am scris mai sus a fost scris ca un plugin ... nu ca un cod de adăugat în fișierul functions.php ... deoarece lucrați deja cu un plugin, am presupus că doriți să includeți codul de rescriere în plugin. Dar trebuie măcar să faceți apelul add_rewrite_rule() și apoi să resetați regulile de rescriere.

EAMann EAMann
8 feb. 2011 22:43:27

@EAMann: Aceasta adaugă regula în item-ul rewrite_rules din wp_options? M-am uitat la codul din wp-includes/rewrite.php și să fiu al naibii dacă pot spune categoric dacă se salvează sau nu. Dacă se salvează, ce împiedică regula să fie salvată de multe ori? Minți curioase vor să știe!

Peter Rowell Peter Rowell
9 feb. 2011 00:23:31

@Peter add_rewrite_rule() adaugă regula într-un array care este indexat pe baza expresiei regulate definite mai sus (rotate/([^/]+)). Deci nu poate fi adăugată de mai multe ori. Aruncă o privire la metoda add_rule() a clasei WP_Rewrite (/wp-includes/rewrite.php în jurul liniei 1797).

EAMann EAMann
9 feb. 2011 00:32:42

@EAMann, mulțumesc pentru clarificare. Deci asta ar funcționa ca un plugin separat, sau ar trebui să o pun direct în fișierele pluginului folosit? Am încercat să o adaug ca un plugin separat și nu am obținut nicio modificare a linkurilor originale. Sunt în primul rând un designer front-end, așa că aceste lucruri mi se par puțin străine. Mulțumesc! :)

RodeoRamsey RodeoRamsey
9 feb. 2011 00:35:38

Nu este menit să modifice niciunul dintre linkuri. Ceea ce face rescriitorul de URL-uri din WordPress este să mapeze cererile de la un URL la altul. Deci o cerere către http://site.com/rotate/1 va afișa de fapt conținutul de la http://site.com/wp-content/plugins/ad-rotating-plugin/rotate.php?trackerid=1. De asemenea, trebuie să ai permalink-uri frumoase activate, altfel toate astea sunt inutile.

EAMann EAMann
9 feb. 2011 00:40:00

@EAMann: Deci array-ului la care este adăugat nu este niciodată scris în baza de date, corect?

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

@EAMann, da am permalink-uri frumoase activate, dar ceea ce trebuie să se întâmple este ca URL-urile să fie rescrise la încărcarea paginii, sau ascunde cumva astfel încât atunci când pagina este încărcată, ei să nu VADĂ link-ul lung, ci de fapt să vadă link-ul scurt. Îmi pare rău dacă am fost neclar.

RodeoRamsey RodeoRamsey
9 feb. 2011 01:12:46

Nu din câte știu eu.

EAMann EAMann
9 feb. 2011 01:13:27

@eamann Vreau ceva similar cu asta. Cererea este redirecționată către rotate.php dar găsesc $_GET['tracker']=$matches[1] în loc de $_GET['tracker']=1. Ai întâlnit o astfel de problemă? Ai vreo sugestie?

a_fan a_fan
29 aug. 2011 17:11:36

@Affan Nu sunt sigur ce întrebi. Te rog să pui o nouă întrebare cu mai multe detalii...

EAMann EAMann
29 aug. 2011 18:43:06
Arată celelalte 6 comentarii