我想使用輸出緩衝區在PHP中重寫我的URL。理想情況下,這是我的來源,我可以保留我的鏈接作爲example.com/index.php?action=123;sa=456;sa2=789
,但當輸出到瀏覽器它重寫爲example.com/123/456/789
它似乎工作,但當它到達「sa2」重寫輸出緩衝區往往偶爾會中斷,所有的瀏覽器看到的是一個空白的白頁。當頁面加載時,它會啓動一個帶有gzip的輸出緩衝區,然後是一個帶有重寫回調的輸出緩衝區。這裏是我的PHP /的.htaccess從輸出緩衝區PHP URL重寫
<?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輸出緩衝的問題,我似乎無法找到什麼,我做錯了。任何幫助是極大的讚賞。
強制塊大小似乎沒有解決問題。 'ob_start('rewrite',0);'當訪問帶有「sa2」的鏈接時仍然產生空白頁面 –