Apache mod_rewrite已启用,但无法正常工作

时间:2011-04-25 08:13:20

标签: apache mod-rewrite

与使用mod_rewrite的问题争夺第二天。

系统操作系统:Windows XP HTTP服务器:Apache 2.2 httpd

来自httpd.conf

的相关行
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
DocumentRoot "N:/Web-dev/www"

<Directory "/">
     Options Indexes +FollowSymLinks MultiViews
     AllowOverride All
     Order allow,deny
     Allow from all
</Directory>

<Directory "N:/Web-dev/www">
    Options Indexes +FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

.htaccess包含:

RewriteEngine on
RewriteRule ^alice.html$ bob.html

php信息说

Loaded Modules  core mod_win32 mpm_winnt http_core mod_so mod_actions mod_alias mod_asis mod_auth_basic mod_authn_default mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dir mod_env mod_include mod_isapi mod_log_config mod_mime mod_negotiation mod_setenvif mod_rewrite mod_proxy mod_php5 

两个文件都是现有的,加载alice.html,它仍然加载它,在rewrite.log中,它显示:

127.0.0.1 - - [25/Apr/2011:11:01:27 +0300] [localhost/sid#7b5148][rid#2bc70b0/initial] (1) [perdir N:/Web-dev/www/] pass through N:/Web-dev/www/alice.html

我试图测试,如果它正在读取.htaccess文件,通过添加一些乱码重写引擎命令,并证明:

[Mon Apr 25 10:47:04 2011] [alert] [client 127.0.0.1] N:/Web-dev/www/.htaccess: Invalid command 'ReDELETEMEwriteEngine', perhaps misspelled or defined by a module not included in the server configuration

但是,对RewriteRule来说,改变一样,就像它忽略那些一样。我没有选择,该怎么做!?

1 个答案:

答案 0 :(得分:9)

进行更多测试,我得到了奇怪的结果 - 在RewriteEngine命令之前添加了一些DELETEME - 它失败并出现错误,如果我之后添加任何内容,它会忽略它,就好像没有错误一样!

然后我回想起我对正则表达式和文本分析的经验,我想知道,如果篡改CRLF会有什么好处,并且发现,当前文件的新行符号是什么,发现它们在哪里CR。据我所知,Apache是​​基于unix的软件,我想,它可能会误解这些,所以我把它们转换成了LF,就是这样,事后一切都运转了!

注意将来 - 使用您的编辑器(EditPlus,Notepad ++等)确保您的.htaccess新行符号是多平台兼容(CRLF),或者至少是unix兼容(LF),如果使用apache! / p>