2012-03-19 44 views
2

工作,我有許多路由路徑的應用程序如下 -FatFree路由選擇不生產

F3::route('GET /', 'Main->get_front_page'); 
F3::route('GET /login/check_for_login', 'Login->check_for_login'); 

第一條路線正確匹配。然而,第二條路線不匹配,我得到了404條。事實上,第一條路線之後的任何路線都不匹配。

爲了使事情更加複雜,所有的路由都在我的本地機器上工作。

+0

你在一個子目錄中使用它還是作爲你的主站點? – 2012-03-20 16:42:21

+1

我正在使用它作爲子目錄。但是,我解決了這個問題。我的rewrite_mod沒有正常工作。命令en2mod不起作用。必須手動更改AllowOverride。我忘了我已經在我的本地主機上完成了。 – Siddharth 2012-03-20 19:03:18

回答

3

檢查您的apache .htaccess文件。尤其是RewriteBase的網址。我經常會忘記這個:)

+1

我的.htaccess文件看起來像這個 - RewriteEngine敘述在 RewriteBase/ 的RewriteCond%{} REQUEST_FILENAME!-f 的RewriteCond%{} REQUEST_FILENAME!-d 重寫規則。*的index.php [L,QSA] 我也使用我的本地主機上有相同的.htaccess文件。 – Siddharth 2012-03-19 12:11:08

+0

有沒有可以提供的日誌/錯誤信息? – egis 2012-03-19 12:21:55

+1

我在error.log中發現這個錯誤 - [Mon Mar 19 12:23:56 2012] [error] [client 122.169.95.17]文件不存在:/ var/www/login,referer:http:// db .educateglobal.org/ 我不明白這是什麼意思?爲什麼要尋找這樣的文件? – Siddharth 2012-03-19 12:26:09

0

對於共享主機,fatfree框架部署將不會像本地服務器一樣工作。所以,你需要創建一個.htaccess文件

# Enable rewrite engine and route requests to framework 
RewriteEngine On 

# Some servers require you to specify the `RewriteBase` directive 
# In such cases, it should be the path (relative to the document root) 
# containing this .htaccess file 
# 
# RewriteBase/

RewriteRule ^(tmp)\/|\.ini$ - [R=404] 

RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php [L,QSA] 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] 

創建使用上面的代碼.htaccess文件和文件放置在你的脂肪無框架項目的根。我試過這個,效果很好。