2009-04-12 4 views
3

J'ai ajouté quelques fonctionnalités supplémentaires à mon wordpress afin que je puisse le visiter avec une variable et faire des choses supplémentaires. Le problème est, quand je transforme mon lien dynamique moche en formatage aimable du permlink dans le fichier .htaccess, wordpress le remplace/l'ignore. J'ai entendu dire qu'il y avait un moyen de le faire, mais la façon dont j'essaie de le faire en se basant sur ce que les gens ont dit renvoie toujours une page 404 malgré tout. Je sais que le fichier son pointage fonctionne.Comment ajouter simplement de nouvelles réécritures personnalisées au .htaccess d'un wordpress sans échec?

2 façons ppl dire des œuvres mais j'ai eu pas de joie avec:

1) insérer les règles ci-dessus la #BEGIN partie 2 wordpress) utiliser add_rewrite_rule() fonction quelque part wordpress

Quelqu'un at-il eu un succès avec ces méthodes? ou d'autres méthodes?

Voici ce que mon fichier .htaccess ressemble

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule ^/ref/(.*)$ /index.php?ref=1&sid=$1 [NC] 
</IfModule> 


# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/


RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 


</IfModule> 

Dans mes thèmes function.php J'ai aussi essayé d'ajouter:

add_rewrite_rule('/ref/(.*)$', 'index.php?ref=1&sid=$matches[1]','top'); 

sans succès.

J'ai également essayé les solutions sur @WordPress + mod_rewrite sans joie.

Aidez s'il vous plaît! :)

des idées?

+0

Quelle variable supplémentaire est la vôtre? Avez-vous envisagé de vérifier qui est l'utilisateur ou de créer une nouvelle option dans WordPress au lieu de cela? –

Répondre

3

Cela fonctionne - Je viens de tester ce - Note I ajouté un L à la fin de la RewriteRule

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteRule ^/ref/(.*)$ /index.php?ref=1&sid=$1 [NC,L] 

#wp 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
+0

MERCI chris très utile. – willdanceforfun

2

une nouvelle règle sera toujours remplacer les anciens

essayez le

suivant
<IfModule mod_rewrite.c> 
RewriteEngine On 
#wp 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

RewriteRule ^/ref/(.*)$ /index.php?ref=1&sid=$1 [NC] 


</IfModule> 
+0

Cela a du sens. J'ai lu ailleurs que les règles personnalisées doivent être ajoutées avant que le Wordpress ne commence. Sur les exemples liés ci-dessus sont avant. J'ai essayé de le mettre ci-dessous juste maintenant mais il ne m'aime pas :(Merci quand même! – willdanceforfun

2

Dans les fichiers .htaccess vous devez quitter la barre oblique dans les motifs de la directive RewriteRule loin. Donc, essayez ceci:

RewriteRule ^ref/(.*)$ index.php?ref=1&sid=$1 [NC] 
+0

Essayé avec les doigts croisés et pas de cigare: | Merci de toute façon Gumbo – willdanceforfun

+0

Avez-vous essayé avec un chemin relatif? – Gumbo

+0

@Gumbo, puis-je vous demander de jeter un oeil à une question liée au domaine personnalisé wordpress ici - http://stackoverflow.com/questions/43782429/wordpress-make-custom-field-values-clickable-to-retrive-them-later? –

1

Je me suis retrouvé à faire ce qui suit en php puisque les solutions ci-dessus ne semblaient pas fonctionner. rulership Wordpress sur le fichier .htaccess est suprême:

if(strstr($_SERVER['REQUEST_URI'], '/ref/')) { 

Et de qui ont été en mesure de faire assez bien la même chose. Une jolie url qui se traduit par autre chose.

Questions connexes