2012-03-14 42 views
0

我有一個.htaccess中mod_rewrite的指令,因此像http://example.com/foo/bar/baz URL被內部被重寫的index.php?頁=巴茲mod_rewrite的做指數錯誤

RewriteEngine  on 
RewriteBase  /foo/bar/ 
RewriteRule  ^index.php   - [L,NC] 
RewriteRule  ^([^/]*)/?$   index.php?&p=$1 [L,QSA] 
RewriteRule  ^([^/]*)/([^/]*)/?$ index.php?&p=$1&v=$2 [L,QSA] 

它工作正常,在

和別的我在它拋出,除非第一個參數是索引。

我已經變成RewriteLogLevel多達9個,而我得到這樣一個條目,當我參觀http://example.com/foo/bar/index/baz

[perdir ..../foo/bar/] add path info postfix: ..../foo/bar/index.php -> ..../foo/bar/index.php/baz 

因此,它看起來像是內部到Apache實際上是重寫的/索引/部分在mod_rewrite之前甚至可以看到/index.php/的URL,這是一個問題。它不會錯誤地重寫其他任何內容,只是索引。

我真的不明白爲什麼它不會與索引工作,但將與一切。這是這個項目的唯一重寫指令,否則就是股票設置。

這是Apache 2.2.21和PHP 5.3.8。


我希望我是清楚的,但以防萬一,我希望網址重寫這樣的:

  • /富/酒吧/索引 - > /foo/bar/index.php ?頁=索引
  • /富/酒吧/索引/ - > /foo/bar/index.php?page=index
  • /富/酒吧/第1頁 - > /foo/bar/index.php? page = page1
  • /foo/bar/page2/word - > /foo/bar/index.php?page=page2 & v =單詞

這一切工作正常,除了與索引中的網址。

+1

嘗試添加'選項-MultiViews'到您的htaccess,防止衝突與'index.php' – Gerben 2012-03-15 18:44:39

+0

輝煌。這正是我需要做的。謝謝!我想這是某種內容談判。 – Michael 2012-03-16 04:11:24

+1

的確是這樣,而且在Multiviews優先mod_rewrite的,導致你的問題。 – Gerben 2012-03-16 13:16:30

回答

1

嘗試增加Options -MultiViews到您的htaccess,防止衝突與index.php