Как переопределить.htaccess с помощью новых правил без ftp или отредактировать его вручную


Я хочу, чтобы скрипт добавлял новые правила к текущему .htaccess, и пользователю не нужно было использовать ftp или редактировать его вручную.

Пример, я использую timthumb для изменения размера изображения в моей теме и хочу переписать URL, и текущий .htaccess будет примерно таким.

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

Вопрос

Как добавить новое правило в опцию .htacces в моей теме.

Включить перезапись модов для Timthumb?: [Да] [Нет]

Если нажать [Да]RewriteRule ^images/thumb/(.*) timthumb.php?filename=$1 будет автоматически добавлено в текущий .htaccess

Пусть я знаю

Author: wow, 2011-02-21

1 answers

Вы можете добавить дополнительные правила сразу после строки ^index\.php$ с помощью класса WP_Rewrite, более конкретно метода add_external_rule(). Они добавляются в массив non_rewrite_rules, , который записан в методе mod_rewrite_rules().

Это очень простой пример. Вы все равно должны очистить правила перезаписи (один раз), либо при активации плагина, либо посетив страницу Постоянные ссылки.

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
Author: Jan Fabry, 2011-02-21 15:20:09