2011-07-05 92 views
1

我正在設置一個php mvc框架,我想將域後的任何內容重定向到index.php/$ 1,但它不起作用。我有rewrite_module啓用和AllowOverride全部,有什麼我失蹤?將所有內容重寫爲index.php/

基本上我想要的網址從這個http://www.example.com/foo/barhttp://www.example.com/index.php/foo/bar去,所以我可以從$ _SERVER抓住它[ 'PATH_INFO']

這裏就是我有...

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php/$1 [L] 

的httpd的虛擬主機.conf

NameVirtualHost *:80 

<VirtualHost *:80> 
    DocumentRoot c:/wamp/www 
    ServerName localhost 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "c:/websites/snugglemvc" 
    ServerName www.snugglemvc.com 
    <Directory "c:/websites/snugglemvc"> 
     Order Deny,Allow 
     Allow from all 
     AllowOverride all 
    </Directory> 
</VirtualHost> 

回答

0

這是我的httpd.conf文件的問題。我本地沒有AllowOverride。一旦我改變了一切工作。

1

我相信你需要/index.php上的前導斜槓,因爲你的正則表達式匹配行首。

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.php/$1 [L] 
+0

感謝您的回覆馬克,試過已經 – bflemi3

+0

@bflemi規則是好的,工作很好。如果它不適合你,那麼你會得到什麼,一個錯誤?嘗試暫時放置'[R = 302,L]'來查看規則是否實際工作(發生重定向)。 – LazyOne

+0

@LazyOne謝謝,我會試試它,當我回家並讓你知道。當我去www.example.com/foo/bar時,我得到一個404,但是當我去www.example.com/index.php/foo/bar時,它工作正常。我想那是因爲那時重寫是不需要的,並且PATH_INFO被設置。 – bflemi3

相關問題