我的所有请求都被重写为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行。请参阅下面的index.php
<?php
exit('here');
session_start();
error_reporting(-1);
.
.
.
当我使用此网址时
一切正常,即“这里”#39;显示在浏览器中
但是当我使用这个URL时 -
我收到以下错误。
警告:未知:无法打开流:没有此类文件或目录 第0行未知
警告:无法修改标头信息 - 已发送的标头 第0行未知
请注意,这仅发生在特定服务器上。这两个URL在其他服务器和localhost上的工作方式和行为方式相同。两个URL之间的差异只是url编码。
我无法使用第一个URL,因为当我使用form.AjaxSubmit()函数时,jQuery会自动对我的请求体进行编码。
答案 0 :(得分:0)
mod_rewrite必须在映射之前对其进行unescape,所以 反向引用在它们应用时未转义。使用B 标志,后向引用中的非字母数字字符将被转义
请尝试使用B标志
RewriteRule ^ index.php [B,L]
其他可能的解释和解决方案可在此处找到:http://dracos.co.uk/code/apache-rewrite-problem/