1

我不明白的东西...

我有我写的 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 / 

PS对不起我的英语不好

4

2 回答 2

1

不确定这是否是您的整个 .htaccess 但您需要启用重写,这是我使用的重写,它从未失败:

RewriteEngine On
Options -Indexes

RewriteBase /

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

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

希望能帮助到你

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

于 2012-04-05T16:26:07.420 回答
0

终于我找到了我的问题的解决方案!答案非常非常非常简单……

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

重新加载 apache2 配置,一切都开始正常工作

于 2012-04-06T10:05:30.443 回答