从我的自定义插件中,在激活时,我想在htaccess中添加一些规则,但要在文件的开头。
insert_with_markers 在htaccess末尾添加规则,例如:
$lines = array();
$lines[] = \'# MY RULES\';
return insert_with_markers(ABSPATH . \'.htaccess\', \'TEST\', $lines);
结果
# 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
预期的
# 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
如何在htaccess的开头添加我的规则?
最合适的回答,由SO网友:Max Yudin 整理而成
使用insert_with_markers()
功能您只能在WordPress注释之间插入规则,例如# BEGIN WordPress
和# END WordPress
.
因此,您应该使用普通PHP来实现您的目标。
创建规则阅读现有规则.htaccess
并连接您的规则和现有规则编写文件,这是一个肮脏的示例:
<?php
$str = "# BEGIN TEST\\n# MY RULES\\n# END TEST\\n";
$str .= file_get_contents( ABSPATH . \'.htaccess\' );
file_put_contents( ABSPATH . \'.htaccess\', $str );
或使用
FILE_APPEND
标记为
file_put_contents()
.
记住
允许PHP更改
.htaccess
. 一个受感染的文件足以破坏您的服务器。