使用 PHP 更改 .htaccess - 删除重写规则



一旦页面被删除,我正在使用PHP删除/添加静态页面,我希望能够将其从.htaccess中删除,但是我已经尝试过了,但它抛出了一个错误:

警告:preg_replace() [function.preg-replace]:未知修饰符 '' ...

代码:

$page_name = $row['page_name']; // Example:  help
preg_replace('/RewriteRule ' . preg_quote('^' . $page_name . '/?$ page.php?mode=') . '.*/i', '', $htaccess);

这是它应该完全删除的内容的示例:

RewriteRule ^help/?$ page.php?mode=help
您必须通过将

表达式分隔符作为第二个参数传递给preg_quote来转义表达式分隔符。

preg_replace('/RewriteRule ' . preg_quote('^' . $page_name . '/?$ page.php?mode=', '/') . '.*/i', '', $htaccess);

否则你的/不会被逃脱。如文档中所述,"特殊正则表达式字符为:.\ + * ?[ ^ ] $ ( ) { } = !<> |: -"

这样使用

preg_replace("~~msi","要替换的模式")。另外 - 良好的实践是通过行而不是 - 一次更改所有文本!!

所以

foreach ( file(.htaccess) as $line)
{

并在每行中替换,}

比全部输出,存储旧.htaccess的副本...

,阿尔森

最新更新