2012-07-26 96 views
3

我完全卡在htaccess重写不能在我的服务器上工作。它是笨一个基本的index.php重写,并开发时能正常工作在我的Mac,但无法在我的服务器(CentOS的,阿帕奇2,南国)htaccess重写问题

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

试图加载/左右/会显示在index.php页。 /index.php/about将显示正确的页面。我尝试过所有我能想到的选项组合,但都无济于事。我的rewrite.log样本如下。

[dev.tirius.co.uk/sid#5d65288][rid#5e37c00/initial] (3) [per-dir /home/tirius/subdomains/dev/public_html/] add path info postfix: /home/tirius/subdomains/dev/public_html/about -> /home/tirius/subdomains/dev/public_html/about/ 
[dev.tirius.co.uk/sid#5d65288][rid#5e37c00/initial] (3) [per-dir /home/tirius/subdomains/dev/public_html/] strip per-dir prefix: /home/tirius/subdomains/dev/public_html/about/ -> about/ 
[dev.tirius.co.uk/sid#5d65288][rid#5e37c00/initial] (3) [per-dir /home/tirius/subdomains/dev/public_html/] applying pattern '^(.*)$' to uri 'about/' 
[dev.tirius.co.uk/sid#5d65288][rid#5e37c00/initial] (2) [per-dir /home/tirius/subdomains/dev/public_html/] rewrite about/ -> /index.php/about/ 
[dev.tirius.co.uk/sid#5d65288][rid#5e37c00/initial] (1) [per-dir /home/tirius/subdomains/dev/public_html/] internal redirect with /index.php/about/ [INTERNAL REDIRECT] 
[dev.tirius.co.uk/sid#5d65288][rid#5e3f7c8/initial/redir#1] (3) [per-dir /home/tirius/subdomains/dev/public_html/] add path info postfix: /home/tirius/subdomains/dev/public_html/index.php -> /home/tirius/subdomains/dev/public_html/index.php/about/ 
[dev.tirius.co.uk/sid#5d65288][rid#5e3f7c8/initial/redir#1] (3) [per-dir /home/tirius/subdomains/dev/public_html/] strip per-dir prefix: /home/tirius/subdomains/dev/public_html/index.php/about/ -> index.php/about/ 
[dev.tirius.co.uk/sid#5d65288][rid#5e3f7c8/initial/redir#1] (3) [per-dir /home/tirius/subdomains/dev/public_html/] applying pattern '^(.*)$' to uri 'index.php/about/' 
[dev.tirius.co.uk/sid#5d65288][rid#5e3f7c8/initial/redir#1] (1) [per-dir /home/tirius/subdomains/dev/public_html/] pass through /home/tirius/subdomains/dev/public_html/index.php 

正如你所看到的,htaccess的拾取和mod_rewrite的启用和工作,但似乎没有任何可以被附加到index.php

这必须是一个Apache的配置问题,但我真的失去了它的可能性。从httpd.conf中

<Directory "/"> 
    Options ExecCGI FollowSymLinks IncludesNOEXEC Indexes MultiViews SymLinksIfOwnerMatch 
    AllowOverride All 
</Directory> 
+1

1.确保AccessFileName设置为.htaccess 2.和AllowOverride ALL请参阅此文档:http://www.cyberciti.biz/faq/apache-htaccess/ – 2012-07-26 09:55:04

+0

请参阅上面的httpd.conf示例。 – tombeynon 2012-07-26 10:02:43

+0

AccessFileName如何? – 2012-07-26 10:04:19

回答

1

样品这是我在CentOS的.htaccess:

RewriteCond $1 !^(index\.php|images|robots\.txt|favicon\.ico) 
RewriteRule ^(.*)$ index.php?/$1 [L] 

注意正斜杠前的问号。

我认为这样做的原因涉及到运行PHP作为FastCGI。我相信问号使前面的字符可选(即它也会匹配index.ph)。我试着研究这一点,但找不到明确的理由。我想我只是尝试了我在寻找时可以找到的重写小说的每一个变体,并没有打扰问它为什么起作用。

很高兴能有所帮助。

+0

再次感谢,完美工作! – tombeynon 2012-07-27 09:44:21