2012-07-26 97 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