2016-04-25 74 views
1

使用Slim 3,我想我的主頁URL是www.domain.com而不是www.domain.com/Slim框架:首頁路由沒有尾隨斜線

此路由將所有的家庭請求重定向到www.domain.com/

$app->get('/', function ($request, $response, $args) { 

}); 

但是這一次給我的錯誤。

$app->get('', function ($request, $response, $args) { 

}); 

我使用的是標準的.htaccess:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php [QSA,L] 

我認爲這是一個常見的問題。什麼是最好的解決方法?

編輯:

什麼竅門或變通方法,以便主頁URL看起來似乎是沒有地址欄上斜線?

+0

這不是一個常見問題。域後的第一個結尾斜槓是* always *必需的,並且結果請求始終是相同的。 –

+0

有很多網站,他們的主頁沒有使用尾部斜線。 StackOverflow本身就是其中的一個例子。 –

+1

不,您的瀏覽器可能會選擇不顯示它,但它在那裏。它總是* Request URI的第一個字符。它不是域的一部分。 –

回答

3

HTTP規範要求第一個/。如果你去https://stackoverflow.com在Firefox和檢查使用的LiveHTTPHeaders實際發送的頭,你看這個:

 
GET/HTTP/1.1 
Host: stackoverflow.com 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Firefox/45.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-GB,en;q=0.5 
Accept-Encoding: gzip, deflate 
DNT: 1 
Cookie: prov=6c390324-a9bb-439b-872e-ab428c1c136d; __cfduid=dd9fcf26e8242833656cda6fbe7719d851450684069; _ga=GA1.2.1110081223.1450684070 
Connection: keep-alive 

你可以從請求行(GET/HTTP/1.1)看到,初始/是由瀏覽器會自動爲你添加如RFC2616的5.2.1節所述:

請注意,絕對路徑不能爲空;如果原始URI中不存在,它必須以「/」(服務器根目錄)的形式給出。