最近2天我试图在我的电脑上运行一些应用程序(Ubuntu 11.10,Apache/2.2.20(Ubuntu),PHP版本5.3.6-13ubuntu3.1)。它是在PHP Smarty中创建的,它使用重写规则。一切工作正常与像链接:mod_rewrite添加php扩展?
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 没有看起来很可疑对我说:/
请留言你的重写规则 – scibuff 2012-03-16 15:28:15
当你说它不起作用时,你的意思是什么?你得到一个错误?你得到错误的页面?错误的输出?我使用了你的规则,当我进入'/ messages/inbox'时,它调用'messages.php?action = inbox'就好了。 – roychri 2012-03-16 17:14:37
这就是我期望的规则,但不知何故,它只是调用messages.php而没有?action = inbox。在messages.php中有$ _GET ['action']的开关语句,我可以看到变量$ _GET为空... 我认为这是配置Apache的问题,但我找不到它到底在哪里。 – krzysiek 2012-03-17 10:42:43