class-htaccess-handler.php

Htaccess_Handler class for the PerformanceOptimise plugin.

Source includes/Edge/class-htaccess-handler.php5 min readPart of Performance Optimisation

includes/Edge/class-htaccess-handler.php

Htaccess_Handler class for the PerformanceOptimise plugin.

Namespace: PerformanceOptimise\\Inc · Lines: 1326

Class Htaccess_Handler

Class Htaccess_Handler

Source: includes/Edge/class-htaccess-handler.php, line 25

class Htaccess_Handler

Tags: @since 1.2.0

Constants

ConstantVisibilityValueLine
MARKERprivate\'wppo_rules\'33
MAX_RULE_LINE_LENGTHprivate409644
FAILURE_TRANSIENTprivate\'wppo_htaccess_failure\'60

publicstatic update_rules()

public static function update_rules(bool=true $enable): bool

Updates the .htaccess rules based on plugin settings.

ParameterTypeDefaultDescription
$enablebool=true—Whether to enable or disable the rules.

Return: bool — True on success, false on failure.

Tags: @since 1.2.0

Source: includes/Edge/class-htaccess-handler.php, line 80

publicstatic get_htaccess_path()

public static function get_htaccess_path(): string

Resolve the absolute path to the site .htaccess file.

Return: string — Absolute .htaccess path, or empty string when unresolvable.

Tags: @since 2.0.0

Source: includes/Edge/class-htaccess-handler.php, line 253

publicstatic has_rules()

public static function has_rules(): bool

Whether the wppo_rules marker block is present in .htaccess.

Return: bool — True when the marker block exists.

Tags: @since 2.0.0

Source: includes/Edge/class-htaccess-handler.php, line 285

publicstatic remove_rules()

public static function remove_rules(): bool

Remove the wppo_rules marker block and clean backup artifacts.

Return: bool — True when no marker remains (or nothing to remove).

Tags: @since 2.0.0

Source: includes/Edge/class-htaccess-handler.php, line 322

publicstatic cleanup_backup_artifacts()

public static function cleanup_backup_artifacts(): void

Delete the .htaccess backup sibling and orphaned tmp siblings.

Return: void.

Tags: @since 2.0.0

Source: includes/Edge/class-htaccess-handler.php, line 365

publicstatic supports_htaccess()

public static function supports_htaccess(): bool

Whether `.htaccess` writes are meaningful on this server.

Return: bool — True when an `.htaccess` write may proceed.

Tags: @since 2.2.0

Source: includes/Edge/class-htaccess-handler.php, line 450

publicstatic get_failure_transient_key()

public static function get_failure_transient_key(): string

Blog-aware transient key for the persistent .htaccess failure flag.

Return: string — Transient key (blog-prefixed on multisite).

Tags: @since 2.2.0

Source: includes/Edge/class-htaccess-handler.php, line 467

publicstatic has_htaccess_failure()

public static function has_htaccess_failure(): bool

Whether a failed .htaccess write still needs attention.

Return: bool — True when a previous write failed and no success cleared it.

Tags: @since 2.2.0

Source: includes/Edge/class-htaccess-handler.php, line 487

publicstatic flag_htaccess_failure()

public static function flag_htaccess_failure(): void

Persist the .htaccess failure flag so the notice survives page loads.

Return: void.

Tags: @since 2.2.0

Source: includes/Edge/class-htaccess-handler.php, line 509

publicstatic clear_htaccess_failure()

public static function clear_htaccess_failure(): void

Clear the persistent .htaccess failure flag after a verified write.

Return: void.

Tags: @since 2.2.0

Source: includes/Edge/class-htaccess-handler.php, line 531

privatestatic sanitize_rules()

private static function sanitize_rules(array $rules): array|false

Sanitize rule lines before an `.htaccess` write.

ParameterTypeDefaultDescription
$rulesarray—Raw rules lines.

Return: array|false — The rules unchanged when valid, false when rejected.

Tags: @since 2.2.0

Source: includes/Edge/class-htaccess-handler.php, line 559

privatestatic normalize_rules()

private static function normalize_rules(array $rules): array

Normalize a rules array for identical-content comparison.

ParameterTypeDefaultDescription
$rulesarray—Raw rules lines.

Return: array — Normalized rules lines.

Tags: @since 2.0.0

Source: includes/Edge/class-htaccess-handler.php, line 589

privatestatic build_marker_block()

private static function build_marker_block(array $rules): string

Serialize a rules array into a full marker block.

ParameterTypeDefaultDescription
$rulesarray—Rules lines.

Return: string — Marker block, or empty string when there are no rules.

Tags: @since 2.0.0

Source: includes/Edge/class-htaccess-handler.php, line 608

privatestatic splice_block()

private static function splice_block(string $current, string $new_block): string

Splice a marker block into full .htaccess contents.

ParameterTypeDefaultDescription
$currentstring—Current .htaccess contents.
$new_blockstring—New marker block (empty string to remove).

Return: string — Updated .htaccess contents.

Tags: @since 2.0.0

Source: includes/Edge/class-htaccess-handler.php, line 629

privatestatic verify_htaccess_contents()

private static function verify_htaccess_contents(string $contents, bool $expect_block): bool

Verify .htaccess contents after a write.

ParameterTypeDefaultDescription
$contentsstring—Full .htaccess contents.
$expect_blockbool—Whether a wppo block is expected.

Return: bool — True when valid.

Tags: @since 2.0.0

Source: includes/Edge/class-htaccess-handler.php, line 670

privatestatic verify_after_write()

private static function verify_after_write(string $htaccess_file, $wp_filesystem, bool $expect_block): bool

Re-read .htaccess and verify it after a legacy write.

ParameterTypeDefaultDescription
$htaccess_filestring—Absolute path to the .htaccess file.
$wp_filesystemmixed—WP_Filesystem instance.
$expect_blockbool—Whether a wppo block is expected.

Return: bool — True when valid or unverifiable.

Tags: @since 2.0.0

Source: includes/Edge/class-htaccess-handler.php, line 719

privatestatic is_htaccess_write_allowed()

private static function is_htaccess_write_allowed(string $htaccess_file): bool

Whether an .htaccess target may be written by the plugin.

ParameterTypeDefaultDescription
$htaccess_filestring—Absolute .htaccess path candidate.

Return: bool — True when the target may be written.

Tags: @since 2.2.0

Source: includes/Edge/class-htaccess-handler.php, line 749

privatestatic atomic_write_verified()

private static function atomic_write_verified(string $htaccess_file, $wp_filesystem, array $rules): ?bool

Atomically write .htaccess via temp file + rename with verification.

ParameterTypeDefaultDescription
$htaccess_filestring—Absolute path to the .htaccess file.
$wp_filesystemmixed—WP_Filesystem instance.
$rulesarray—Desired rules lines.

Return: bool|null — True on success, false on verified failure, null when atomic write is unsupported.

Tags: @since 2.0.0

Source: includes/Edge/class-htaccess-handler.php, line 794

privatestatic read_existing_rules()

private static function read_existing_rules(string $htaccess_file, $wp_filesystem): ?array

Read the existing wppo_rules block as a backup.

ParameterTypeDefaultDescription
$htaccess_filestring—Absolute path to the .htaccess file.
$wp_filesystemmixed—WP_Filesystem instance.

Return: array|null — Existing rules, or null when unavailable.

Tags: @since 2.0.0

Source: includes/Edge/class-htaccess-handler.php, line 1026

publicstatic get_rules()

public static function get_rules(): array

Retrieve the rules to be added to .htaccess.

Return: array — Array of rules.

Tags: @since 1.0.0

Source: includes/Edge/class-htaccess-handler.php, line 1078

Hooks

Hooks referenced in includes/Edge/class-htaccess-handler.php:

HookTypeLineNotes
wppo_litespeed_nextgen_rewritefilter1159@param ×1
wppo_litespeed_nextgen_rewritefilter1176@param ×1
wppo_htaccess_nextgen_rulesfilter1228@param ×1
wppo_htaccess_cache_vary_rulesfilter1293@param ×1
wppo_htaccess_rulesfilter1316@param ×1