奇怪的情况mod_rewrite和PHP

时间:2012-04-05 16:12:22

标签: php apache mod-rewrite

我不明白......

我有CMS编写,并且有一些关于“mod_rewrite”隐藏错误的奇怪问题。在apache2 error.log“mod_rewrite”中给出:

File does not exist: /home/path/to/request, referer: http://IP/request?view=1

我的$_GET / $_POST请求都是空的

$_SERVER['REQUEST_URI']没问题(返回request?view=1

$_SERVER['QUERY_STRING']也是空的

我也安装Drupal CMS来测试它是否在Web服务器上出现问题,但是Drupal工作得很好...然后我将drupal“.htaccess”文件复制到我的CMS以修复mod_rewrite首选项。 (Drupal不会像我一样创建apache错误)  没有运气,我再次遇到同样的问题。

还尝试了Drupal CMS的.htaccess中的所有选项

我尝试打开RewriteLog(多次尝试),但没有结果,没有创建单个日志文件。

我缺少什么或者......我的cms很糟糕 还有一件事,我的 CMS工作得很好在其他网络服务器上使用完全相同的文件.... ?????

RewriteEngine On
Options -Indexes
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 

#tested RewriteRule ^ index.php [L] 
#tested RewriteRule ^ index.php [L,QSA] 
#tested Options FollowSymLinks 
#tested Options -MultiViews 
#tested RewriteBase / 

P.S。抱歉我的英文不好

2 个答案:

答案 0 :(得分:1)

不确定这是不是你的整个.htaccess但你需要启用重写,这是我使用的重写并且它永远不会失败:

RewriteEngine On
Options -Indexes

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

RewriteRule将所有(.*)传递给index.php中的路由参数,然后我的路由器类处理控制器ect,QSA标志还允许我将额外的GET / POST值传递给任何部分的剧本。

希望有所帮助

ps我不添加RewriteCond %{REQUEST_FILENAME} !-d因为我不允许文件夹视图而且我不提供文件夹中的内容,所有内容都通过控制器inc(images,css,js),因此不需要大多数情况下。它还可以保护像core&amp ;;这样的文件夹。模板等;)

答案 1 :(得分:0)

最后我找到了解决问题的方法! 答案非常,非常非常简单......

在apache2配置中(在Ubuntu上)我发现默认情况下<Directory标签是重复的...我只是擦除所有目录标签并创建一个基本标记。

重新加载apache2配置,每件事情都开始正常工作