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?
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?
Share Improve this question asked Sep 29, 2019 at 9:16 Simone NigroSimone Nigro 1658 bronze badges1 Answer
Reset to default 2Using 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.
- Create your rules
- Read existing
.htaccess
and concatenate your and existing rules - 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.