1

From my custom plugin, on activation, i want add some rules into htaccess but at beginning of the file.

insert_with_markers add the rule at the end of htaccess, eg.:

$lines = array();
$lines[] = '# MY RULES';
return insert_with_markers(ABSPATH . '.htaccess', 'TEST', $lines);

result

# BEGIN WordPress
<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
# BEGIN TEST
# MY RULES
# END TEST

expected

# BEGIN TEST
# MY RULES
# END TEST
# BEGIN WordPress
<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

how add my rules at beginning of htaccess?

1 Answer 1

2

Using insert_with_markers() function you can insert your rules only between WordPress comments e.i. # BEGIN WordPress and # END WordPress.

So, you should use plain PHP to achieve your aim.

  1. Create your rules
  2. Read existing .htaccess and concatenate your and existing rules
  3. Write the file

Here is a dirty example:

<?php
$str  = "# BEGIN  TEST\n# MY RULES\n# END TEST\n";
$str .= file_get_contents( ABSPATH . '.htaccess' );
file_put_contents( ABSPATH . '.htaccess', $str );

Or use FILE_APPEND flag with the file_put_contents().

Remember!

It's a very bad idea to allow PHP to alter your .htaccess. One infected file is enough to break your server.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.