web-dev-qa-db-fra.com

Comment remplacer .htaccess avec de nouvelles règles sans ftp ou le modifier manuellement

Je veux que le script ajoute de nouvelles règles au .htaccess actuel et que l'utilisateur n'ait pas besoin de ftp ou de le modifier manuellement.

Par exemple, j'utilise timthumb pour redimensionner l'image sur mon thème et je veux réécrire l'URL et le .htaccess actuel ressemblera à ceci.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^images/thumb/(.*) timthumb.php?filename=$1
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Question

Comment ajouter la nouvelle règle à l'option .htacces sur mon thème.

Activer la réécriture de mod pour Timthumb? : [Oui Non]

Si vous cliquez sur [Oui], RewriteRule ^images/thumb/(.*) timthumb.php?filename=$1 sera automatiquement ajouté au .htaccess actuel

Faites le moi savoir

2
wow

Vous pouvez ajouter des règles supplémentaires juste après la ligne ^index\.php$ via la classe WP_Rewrite, plus précisément la méthode add_external_rule(). Ils sont ajoutés au tableau non_rewrite_rules, qui est écrit dans la méthode mod_rewrite_rules() .

Ceci est un exemple très simple. Vous devez toujours vider les règles de réécriture (une fois), soit lors de l'activation du plug-in, soit en visitant la page Permaliens .

add_action( 'init', 'wpse9966_init' );
function wpse9966_init()
{
    global $wp_rewrite;
    // The pattern is prefixed with '^'
    // The substitution is prefixed with the "home root", at least a '/'
    $wp_rewrite->add_external_rule( 'images/thumb/(.*)$', 'timthumb.php?filename=$1' );
}
4
Jan Fabry