网址抛出失败打开流和头已发送错误

问题描述:

我所有的请求都被重写到index.php。请参阅下面的.htaccess文件。网址抛出失败打开流和头已发送错误

IndexIgnore * 

<IfModule mod_rewrite.c> 

    #Options +FollowSymLinks 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 

# BEGIN EXPIRES 
<IfModule mod_expires.c> 
    ExpiresActive On 
    ExpiresDefault "access plus 10 days" 
    ExpiresByType image/gif "access plus 1 month" 
    ExpiresByType image/png "access plus 1 month" 
    ExpiresByType image/jpeg "access plus 1 month" 
    ExpiresByType image/jpg "access plus 1 month" 

    <IfModule mod_headers.c> 
     Header append Cache-Control "public" 
     </IfModule> 
</IfModule> 
# END EXPIRES 

<FilesMatch “.(ttf|otf|eot|woff)$”> 
    <IfModule mod_headers.c> 
     Header set Access-Control-Allow-Origin “*” 
    </IfModule> 
</FilesMatch> 

为了调试起见,我退出了我的index.php的第2行。见下面

<?php 
exit('here'); 
session_start(); 
error_reporting(-1); 
    . 
    . 
    . 

我的index.php当我使用这个网址 -

http://www.example.com/admincp/site/editor/layout?csrf_token=852f2d49ab5d27fd061a164a5e059531&val[page]=feed&val[column]=2&middle[2.23334858434E+12][widget]=content&middle[2.23334858434E+12][settings]=&right[c7ef099029aca9f5d297d79757ea100c][widget]=plugin::ads|ads&right[c7ef099029aca9f5d297d79757ea100c][settings]=&right[eed08f19fa0e3fb7d017e5b32d9eba16][widget]=plugin::blog|latest&right[eed08f19fa0e3fb7d017e5b32d9eba16][settings]=&right[67a8d113cceb768272adedb97e5e349c][widget]=plugin::music|latest&right[67a8d113cceb768272adedb97e5e349c][settings]=&right[31dc5ba68111024770ae8d2f6c12312d][widget]=plugin::page|latest&right[31dc5ba68111024770ae8d2f6c12312d][settings]=&right[d66d56bf471a39e6e2b4ac58b4733304][widget]=plugin::video|latest&right[d66d56bf471a39e6e2b4ac58b4733304][settings]=

一切正常,即“这里”被显示在浏览器

但是,当我使用这个网址 -

http://www.example.com/admincp/site/editor/layout?csrf_token=852f2d49ab5d27fd061a164a5e059531&val%5Bpage%5D=feed&val%5Bcolumn%5D=2&middle%5B2.23334858434E%2B12%5D%5Bwidget%5D=content&middle%5B2.23334858434E%2B12%5D%5Bsettings%5D=&right%5Bc7ef099029aca9f5d297d79757ea100c%5D%5Bwidget%5D=plugin%3A%3Aads%7Cads&right%5Bc7ef099029aca9f5d297d79757ea100c%5D%5Bsettings%5D=&right%5Beed08f19fa0e3fb7d017e5b32d9eba16%5D%5Bwidget%5D=plugin%3A%3Ablog%7Clatest&right%5Beed08f19fa0e3fb7d017e5b32d9eba16%5D%5Bsettings%5D=&right%5B67a8d113cceb768272adedb97e5e349c%5D%5Bwidget%5D=plugin%3A%3Amusic%7Clatest&right%5B67a8d113cceb768272adedb97e5e349c%5D%5Bsettings%5D=&right%5B31dc5ba68111024770ae8d2f6c12312d%5D%5Bwidget%5D=plugin%3A%3Apage%7Clatest&right%5B31dc5ba68111024770ae8d2f6c12312d%5D%5Bsettings%5D=&right%5Bd66d56bf471a39e6e2b4ac58b4733304%5D%5Bwidget%5D=plugin%3A%3Avideo%7Clatest&right%5Bd66d56bf471a39e6e2b4ac58b4733304%5D%5Bsettings%5D=

我收到以下错误。

警告:未知:未能打开流:在 没有这样的文件或目录在网上未知0

警告:不能更改头信息 - 在 未知已经发出已上线头0

请注意,这只发生在特定的服务器上。这两个URL在其他服务器和本地主机上的工作方式和行为方式相同。两个URL之间的区别仅仅是url编码。

我无法使用第一个URL,因为当我使用form.AjaxSubmit()函数时,jQuery会自动编码我的请求主体。

mod_rewrite必须在映射它们之前对unescape网址进行映射,因此 反向引用在应用它们时未被转义。使用B 标志,在反向引用非字母数字字符将被转义

于是用B标志尝试

RewriteRule^index.php [B,L] 

RewriteRule Flags

其他可能的解释和解决方案可以在这里找到:http://dracos.co.uk/code/apache-rewrite-problem/

+0

修改标志并重新启动Apache后,问题未解决。不管怎么说,还是要谢谢你。 – Dipo