2010-01-17 41 views
2

我試圖在.htaccess中打開一個mod重寫實現REST風格的URL。有一點是我正在測試環境(新的cpanel帳戶)中開發的。下面是的.htaccess:.htaccess用REST樣式URL重寫500錯誤

RewriteEngine on 

#REMOVE THIS LINE ON SITE LAUNCH! 
RewriteBase /~myNewAccount/ 

#Hide .php extensions for cleaner URLS 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

Options All -Indexes 

我可以用看起來像這樣的網址:

www.example.com/~myNewAccount/index.php/id/50 

我可以在這裏訪問PATH_INFO,但是當我嘗試這樣做:

www.example.com/~myNewAccount/index/id/50 

...我得到一個500內部服務器錯誤。我已經嘗試了Gumbo實施solution found here,但是這會讓事情變得糟糕。

關於可能導致這種情況的想法?

回答

2

試試這個規則:

RewriteRule ^index(/.*)?$ index.php$1 [L] 

或者,如果你不想指數是在URL路徑都:

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

問題是我得基本URL的地段(類似於index.php,但帶有其他名稱),我寧願不在每個頁面都有一個規則。這可能嗎? – jay 2010-01-17 18:57:15

+0

@jeerose:如果您在替換中使用相對路徑,那麼它們將總是依賴於基本路徑。 – Gumbo 2010-01-17 19:00:11