网址抛出失败打开流和头已发送错误
问题描述:
我所有的请求都被重写到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当我使用这个网址 -
一切正常,即“这里”被显示在浏览器
但是,当我使用这个网址 -
我收到以下错误。
警告:未知:未能打开流:在 没有这样的文件或目录在网上未知0
警告:不能更改头信息 - 在 未知已经发出已上线头0
请注意,这只发生在特定的服务器上。这两个URL在其他服务器和本地主机上的工作方式和行为方式相同。两个URL之间的区别仅仅是url编码。
我无法使用第一个URL,因为当我使用form.AjaxSubmit()函数时,jQuery会自动编码我的请求主体。
答
mod_rewrite必须在映射它们之前对unescape网址进行映射,因此 反向引用在应用它们时未被转义。使用B 标志,在反向引用非字母数字字符将被转义
于是用B标志尝试
RewriteRule^index.php [B,L]
其他可能的解释和解决方案可以在这里找到:http://dracos.co.uk/code/apache-rewrite-problem/
修改标志并重新启动Apache后,问题未解决。不管怎么说,还是要谢谢你。 – Dipo