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]
它工作正常,在
- http://example.com/foo/bar/baz
- http://example.com/foo/bar/page/part
- http://example.com/foo/bar/foobar/baz
和別的我在它拋出,除非第一個參數是索引。
我已經變成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 =單詞
這一切工作正常,除了與索引中的網址。
嘗試添加'選項-MultiViews'到您的htaccess,防止衝突與'index.php' – Gerben 2012-03-15 18:44:39
輝煌。這正是我需要做的。謝謝!我想這是某種內容談判。 – Michael 2012-03-16 04:11:24
的確是這樣,而且在Multiviews優先mod_rewrite的,導致你的問題。 – Gerben 2012-03-16 13:16:30