在htaccess的开头添加带有INSERT_WITH_MARKS的htaccess规则

时间:2019-09-29 作者:Simone Nigro

从我的自定义插件中,在激活时,我想在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的开头添加我的规则?

1 个回复
最合适的回答,由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. 一个受感染的文件足以破坏您的服务器。

相关推荐

5 PHP致命错误:未捕获ArgumentCountError(找不到)

我最近将WordPress站点从PHP5迁移到PHP7。我们的一个自定义文件列表功能(从服务器目录上的文件夹输出文件列表)在PHP7上的新服务器上失败。我知道存在争论冲突,但我不知道如何纠正它。The error:5 PHP致命错误:Uncaught ArgumentCounter错误:函数printDirectory()的参数太少,传入了3个/nas/content/live/lfccedu/wp-content/plugins/lfcc/lfcc。第1026行的php和/nas/content/liv