我想开始使用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但没有运气!
帮助!
由于 马可
答案 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
指令。