出力バッファを使用して PHP で URL を書き換えようとしています。理想的には、これは私のソースではリンクをそのままにしておくことができますexample.com/index.php?action=123;sa=456;sa2=789
が、ブラウザに出力すると次のexample.com/123/456/789
ように書き換えられます。真っ白なページ。ページが読み込まれると、gzip で出力バッファーが開始され、次に rewrite コールバックで出力バッファーが開始されます。ここに私のphp/.htaccessがあります
<?php
if (!ob_start("ob_gzhandler"))
ob_start();
// Handle Rewriting of URLs
RewriteURLs();
function RewriteURLs()
{
// rewrite URLS from output buffer
function rewrite($buffer)
{
// pages
$buffer = preg_replace('/index.php\?page=(.*?)/is', "page/$1", $buffer);
// sub-sub-actions
$buffer = preg_replace('/index.php\?action=(.*?);sa=(.*?);sa2=(.*?)/is', "$1/$2/$3", $buffer);
// sub-actions
$buffer = preg_replace('/index.php\?action=(.*?);sa=(.*?)/is', "$1/$2", $buffer);
// actions
$buffer = preg_replace('/index.php\?action=(.*?)/is', "$1", $buffer);
// index.php removal
$buffer = preg_replace('/index.php/is', "", $buffer);
return $buffer;
}
// start for rewriting
ob_start('rewrite');
}
// rest of content/page loading.......
?>
書き換えを処理する .htaccess
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
# Rules for: pages
RewriteRule ^page/([-_!~*'()$\w]+)/?$ index.php?page=$1 [L,QSA]
# Rules for sub-sub-actions
# /{action}/{subaction}/{subsubaction}/
RewriteRule ^([-_!~*'()$\w]+)/([-_!~*'()$\w]+)/([-_!~*'()$\w]+)/?$ index.php?action=$1;sa=$2;sa2=$3
# Rules for sub-actions
# /{action}/{subaction}/
RewriteRule ^([-_!~*'()$\w]+)/([-_!~*'()$\w]+)/?$ index.php?action=$1;sa=$2
# Rules for: actions
# /{action}/
RewriteRule ^([-_!~*'()$\w]+)/?$ index.php?action=$1 [L,QSA]
これは、ますますPHP出力バッファの問題のように見えます。私が間違っていることを見つけることができないようです。どんな助けでも大歓迎です。