最近2天我试图在我的计算机上运行一些应用程序(Ubuntu 11.10,Apache / 2.2.20(Ubuntu),PHP Version 5.3.6-13ubuntu3.1)。它是在PHP Smarty中创建的,它使用重写规则。一切都很好用链接,如:
localhost/news
它被正确翻译成
localhost/news.php
应该怎么做。但问题是更复杂的链接,如
localhost/message/inbox
应该用规则翻译:
RewriteRule ^messages/(.*)$ /messages.php?action=$1
但它不起作用。我试图调试它。我已经完成登录http.conf
RewriteLog "/home/krzysztofp/rewrite.log" RewriteLogLevel 3
我能看到的是,在开始时有
127.0.0.1 - - [16/Mar/2012:15:56:36 +0100] [krzysztofp/sid#7f8218546a30][rid#7f821837a0a0/subreq] (3) [perdir /var/www/engbook/] add path info postfix: /var/www/engbook/messages.php -> /var/www/engbook/messages.php/inbox
然后它正在尝试匹配message.php
127.0.0.1 - - [16/Mar/2012:15:56:36 +0100] [krzysztofp/sid#7f8218546a30][rid#7f821837a0a0/subreq] (3) [perdir /var/www/engbook/] applying pattern '^messages/(.*)$' to uri 'messages.php/inbox'
虚拟主机:
<Directory /var/www/engbook> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory>
知道为什么会这样吗?
编辑: 我有一个问题,将所有重写规则放在堆栈上,所以这里是: http://pokazkod.pl/d52823d5f0d31ff26e1e29873383d2a2ceb216306a56b3aec1 他们看起来都不怀疑我:/
答案 0 :(得分:8)
尝试删除MultiViews
<Directory /var/www/engbook>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>