Je ne parviens pas à le faire fonctionner en ajoutant des règles de réécriture personnalisées dans functions.php
ou en ajoutant des permidences personnalisées. J'ai ce code dans mon .htaccess
qui fonctionne bien.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN IPHONE RULES
RewriteRule ^mobile/([^/]+)$ mobile/index.php?action=$1 [QSA,L]
# END IPHONE RULES
# BEGIN PDF RULES
RewriteRule ^certificates/30-Days-Certificate-([0-9]+)$ pdf/index.php?type=30day&period=$1 [QSA,L]
RewriteRule ^certificates/12-Month-Certificate$ pdf/index.php?type=12Month [QSA,L]
# END PDF RULES
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Mais de temps en temps, les valeurs par défaut sont actualisées et les règles de l'iPhone et du pdf sont perdues. Le mobile s'appelle comme ceci /mobile/progress?userId=22&date=2011-02-21
où progress
est l'action et les autres ne sont que des vars de requête. Sur le .htaccess
fonctionne bien, mais je ne parviens pas à le faire fonctionner en ajoutant des règles personnalisées. Toute aide sera très appréciée.
La partie entre # BEGIN WordPress
et # END WordPress
sera toujours réécrite lorsque les permaliens seront vidés. Vous pouvez soit placer vos règles de réécriture supplémentaires avant ce segment, soit les ajouter dans WordPress en tant que règles de réécriture externes . Si vous videz vos règles maintenant (en visitant la page Permaliens , par exemple), vos règles supplémentaires seront ajoutées au fichier .htaccess
.
add_action( 'init', 'wpse12708_init' );
function wpse12708_init()
{
global $wp_rewrite;
$wp_rewrite->add_external_rule( 'mobile/([^/]+)$', 'mobile/index.php?action=$1' );
$wp_rewrite->add_external_rule( 'certificates/30-Days-Certificate-([0-9]+)$', 'pdf/index.php?type=30day&period=$1' );
$wp_rewrite->add_external_rule( 'certificates/12-Month-Certificate$', 'pdf/index.php?type=12Month' );
}