mod_rewrite错误:[client 127.0.0.1]文件不存在

时间:2011-09-22 07:03:13

标签: .htaccess mod-rewrite

我想开始使用mod_rewrite,以便将来可以使用友好的url。我在我的localhost dev中测试所有内容。环境但是,我没有运气让模块工作!

我的模块已启用(apache已重启):

LoadModule rewrite_module modules/mod_rewrite.so

名为mod_rewrite.so的文件存在于我的Apache安装目录

中的modules文件夹下

我在c:/ public_html /

下创建了一个名为.htaccess的文件

出于测试目的,我已经创建了我的第一个规则:

RewriteEngine On
# Translate my-product.html to /product.php?id=123
RewriteRule ^my-product\.html$ /product.php?id=123

出于测试目的,product.php非常简单:

<?php
  // display product details
  echo 'You have selected product #' . $_GET['id'];
?>

当我加载http://localhost/my-product.html时,我收到错误:

The requested URL /my-product.html was not found on this server.

当我看到日志时,我看到:

[Thu Sep 22 02:37:49 2011] [error] [client 127.0.0.1] File does not exist: C:/public_html/my-product.html

看起来它根本无法识别.htaccess规则!

我不知道接下来要做什么,我觉得我已经应用了所有最简单的规则来开始使用mod_rewrite但没有运气!

帮助!

由于 马可

2 个答案:

答案 0 :(得分:4)

您是否已将httpd.conf文件中的Allowoverride属性更改为“All”。

要检查服务器中是否启用了mod-rewrite,请加载phpinfo文件并搜索mod_rewrite扩展名。

答案 1 :(得分:1)

您应该配置mod_rewrite日志记录,以便了解会发生什么。在手册中查找RewriteLog指令。

最初,您可以将日志级别设置为9(用于学习)。只要文件保持为空,就会忽略.htaccess,正如您所怀疑的那样。

您也可以将垃圾写入.htaccess以查看它是否得到解释。如果是,您将获得500 Internal Server Error。如果没有,则必须配置目录C:/public_html以允许htaccess文件。请参阅手册中的Options指令。