2014-03-19 209 views
0

我有(可能)很容易修復的問題。我的簡單.htaccess不工作,因爲我想,我無法弄清楚發生了什麼。.htaccess無法正常工作 - 變量

的.htaccess:

RewriteEngine On 
RewriteRule ^([^/]*)/$ /index.html?sport=$1 [L] 

然後,當我去http://domain.com/soccer/然後運行這一行控制檯:window.location.search.replace("?", "");它給我什麼,而應該給我sport=soccer完全一樣,而我去`http://domain.com/index.html?sport=soccer它在做什麼。 ..

這可能是一些容易,但htaccess的是一個總的奧祕,我

問題: 如何使重寫工作,使當人們在

domain.com/soccer/ 

鍵入將工作完全爲:

domain.com/index.html?sport=soccer 

一些簡單的說明(非必要)將幫助很大,所以也許我終於能理解的.htaccess ..

歡呼

回答

0

如果您沒有將客戶端重定向到帶有查詢字符串的URL,那麼您將無法訪問javascript中的參數。 您可以addind [R]將用戶重定向到您的重寫規則:

RewriteEngine On 
RewriteRule ^([^/]*)/$ /index.html?sport=$1 [L,R] 
0
RewriteEngine On 
RewriteRule ^([^/]*)/$ /index.html?sport=$1 [L] 

工作原理:取URI,如/soccer/。剝離領先/並將其與圖案進行比較。在模式中,抓住一切(0個或更多字符),直到碰到一個/(不捕獲/這裏)。這被捕獲到1美元,並且應該是足球。要求輸入端以/。請注意0​​不匹配,因爲它沒有跟蹤/。你可能想使拖尾的/可選:

RewriteRule ^([^/]*)/?$ /index.html?sport=$1 [L] 

現在你已經成功匹配的模式,並得到$ 1,輸出重寫的URI,代足球爲$ 1:

/index.html?sport=soccer 

[L]標誌說這是現在的最後一個重寫規則。

請注意,您使用*作爲模式中的重複計數。如果有人類型http://domain.com/,它將匹配,你會得到一個空的$ 1,導致

/index.html?sport= 

這將可能打破。您可能需要將*(0或更多匹配)更改爲+(1或更多匹配)。

索引究竟是index.php還是其他一些腳本? HTML本身不能對查詢字符串做任何事情。你不妨在這裏給出正確的文件名,而不是再一次重寫。

+0

該索引實際上是一個索引。HTML,並且有一個預加載的JavaScript,它根據不同的運動預先加載不同的圖像集(稍後用於畫布上的一些像素操作)。 –