htaccess处理程序

时间:2011-01-07 02:28:15

标签: apache mod-rewrite

我有一个需要帮助的奇怪问题。它是关于使用apache重写。

这是我的.htaccess内容文件:

Options +FollowSymLinks


 ## This is an example .htaccess-file
 ## To get everything automatically parsed, the following line is needed
 #set link auto on

 ##From now on, every RewriteRule gets recognised.
 RewriteEngine on
 RewriteRule captcha(\.html){0,1}$  captcha.php [QSA,L]
 RewriteCond %{SCRIPT_FILENAME} !-s
 RewriteCond %{SCRIPT_FILENAME} !-d
 RewriteCond %{SCRIPT_FILENAME} !-f
 Rewriterule (.*) handler.php

 ##You can also change the text before the real link by the following line

有了这个规则,我希望除了文件或目录中存在的所有请求都将被定向到我的自定义处理程序:handler.php。

按照预期一切正常,但这种情况不是:

http://../test/form_login/query=%2Ftest%2Findex.php%3Fpage%3Dform&

根网址:/ test /, form_login不是文件或目录 index.php存在于根目录中。

Apache响应:404找不到页面

感谢您的任何帮助。

此致 史蒂夫

1 个答案:

答案 0 :(得分:0)

您正在重写到同一个不存在的目录......

Rewriterule (.*) handler.php

所以如果我去你的域名/no/directory/exists/

它将我重定向到yourdomain.com/no/directory/exists/handler.php

所以没有文件/目录

使用重写基础或使用

Rewriterule (.*) /handler.php

如果在yourdomain.com/handler.php上存在handler.php

并且您可能想要添加QSA以附加变量...

Rewriterule (.*) /handler.php [R,QSA,L]

**还添加了R标志来更新/显示浏览器中的reidrect url以及最后一条规则的L标志......