mod_rewrite_rulesхук-фильтрWP 1.5.0

Позволяет изменить/добавить/удалить любые правила в файл .htaccess.

Например с помощью этого хука можно:

  • Изменить имеющиеся правила для создания ЧПУ (перезаписи URL).
  • Добавить свои правила редиректов или перезаписи URL.
  • Создать правило на 301 редирект с http на https.
  • Добавить любые другие строки в файл .htaccess.

Добавляются правила в htaccess с помощью функции insert_with_markers()

Использование

add_filter( 'mod_rewrite_rules', 'wp_kama_mod_rewrite_rules_filter' );

/**
 * Function for `mod_rewrite_rules` filter-hook.
 * 
 * @param string $rules mod_rewrite Rewrite rules formatted for .htaccess.
 *
 * @return string
 */
function wp_kama_mod_rewrite_rules_filter( $rules ){

	// filter...
	return $rules;
}
$rules(строка)
Список имеющихся на данный момент правил перезаписи для файла .htaccess.

Примеры

0

#1 Дополним .htaccess правилами редиректа с HTTP на HTTPS

Код из плагина Mihdan: HTTP To HTTPS Via Htaccess.

add_filter( 'mod_rewrite_rules', function ( $rules ) {

	$https  = "\n";
	$https .= "# Редирект с HTTP на HTTPS.\n";
	$https .= "<IfModule mod_rewrite.c>\n";
	$https .= "RewriteEngine On\n";
	$https .= "RewriteCond %{HTTPS} off\n";
	$https .= "RewriteCond %{HTTP:X-Forwarded-Proto} !https\n";
	$https .= "RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n";
	$https .= "</IfModule>\n";
	$https .= "\n";

	return $https . $rules;
} );

Получим в htaccess:

# BEGIN WordPress
# Директивы (строки) между "BEGIN WordPress" и "END WordPress"
# созданы автоматически и подлежат изменению только через фильтры WordPress.
# Сделанные вручную изменения между этими маркерами будут перезаписаны.

# Редирект с HTTP на HTTPS.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L, R=301]
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

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

Список изменений

С версии 1.5.0 Введена.

Где вызывается хук

WP_Rewrite::mod_rewrite_rules()
mod_rewrite_rules
wp-includes/class-wp-rewrite.php 1605
$rules = apply_filters( 'mod_rewrite_rules', $rules );

Где используется хук в WordPress

Использование не найдено.
campusboy 4872youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 9771
3 комментария
    Войти