我正在開發一個Ruby on Rails應用程序,我的路線可以正確處理類似http://localhost:3000/CA
這樣的內容,以轉到某個關於加州的頁面。它處理小寫「ca」,但有沒有辦法讓我的用戶手動輸入小寫「ca」,URL/Routes將顯示大寫「CA」?在routes.rb中將參數從小寫變成大寫?
回答
如果http://localhost:3000/ca
用戶請求時,它應該重定向到(301重定向)http://localhost:3000/CA
, ,你可以在你的控制器
def controller_name
if(params[:id].to_s != params[:id].to_s.upcase)
redirect_to urlname_url(:params[:url].to_s.upcase), :status => :moved_permanently
end
# rest of the code
end
這是好事,有獨特的網址,如重複的URL對SEO的負面影響處理。
您可以使用路線匹配重定向到所需路線的大寫版本。
我不知道你的路線文件是什麼樣子,所以我會爲你提供一個簡化版本的東西,我想出了你可以用來構建你需要的東西。
假設我有一個states
控制器,它對每個單一狀態縮寫都有一個動作。我可以宣佈這樣我的路線(爲get
行動StatesController#CA(加利福尼亞州)):
get '/CA', to: 'states#ca'
這隻會匹配大寫CA,因此,如果用戶鍵入http://localhost:3000/ca
,他們會得到一個錯誤。爲了解決這個問題,我可以匹配'/ ca'到'/ CA':
get '/ca', to: redirect('/CA')
這是非常簡化的。您不太可能想要在路線文件中明確地描述每個州的縮寫。
同樣,我不知道你在路由文件中使用了什麼,所以我只能告訴你(而不是告訴你一個例子)你可以提供一個塊來處理這個邏輯。
使用塊,你也可以創建一個將辦案,當人們利用不一致的縮寫,以及(象轉化cA
或Ca
到CA
)的邏輯。
這裏有一些有用/相關的文檔:http://guides.rubyonrails.org/routing.html#redirection。
請注意,此形式的重定向應該可以工作,但會涉及額外的往返行程和相關的延遲(您將「301永久移動」返回給瀏覽器,並且通常會在新地址重試)。由於它只發生在用戶第一次手動輸入URI(並且大概是之後點擊鏈接),所以它不會太糟糕。 –
- 1. Rails routes.rb - 匹配大小寫不敏感
- 2. 將小寫字母小寫變爲大寫問題
- 3. 如何將SUA從區分大小寫變爲區分大小寫
- 4. 在當前目錄下,其名稱conatains大寫變成小寫
- 5. 用小寫字母寫成小寫字母大寫
- 6. 如何將數組鍵從大寫更改爲小寫?
- 7. Python - 需要將大寫和小寫單詞換成小寫字母
- 8. Mod重寫在localhost上重寫url從小寫到大寫
- 9. 大寫和小寫
- 10. PHP:不區分大小寫參數
- 11. 區分大小寫參數擊
- 12. 大會:小寫大寫
- 13. PowerShell的大小寫變量
- 14. 在edittext中處理大寫和小寫
- 15. 在javascript中轉換大寫和小寫
- 16. 將小寫字母轉換爲大寫
- 17. 將小寫形式轉換爲大寫?
- 18. 將小寫字母轉換爲大寫
- 19. 填寫可變大小數組
- 20. 從大寫更改爲小寫C++
- 21. 笨數據庫中檢索都用大寫,小寫和大小寫混合
- 22. 在Ruby On Rails中大小寫字母大小寫
- 23. 區分大小寫區分大小寫還是全大寫?
- 24. Xpath翻譯函數變成小寫?
- 25. VBA代碼,如何在Excel中將大寫字母改成小寫字母
- 26. 使用Visual Studio更改參數,變量等的大小寫
- 27. 將Perforce從區分大小寫遷移到不區分大小寫
- 28. 變換大小寫混合字轉換成(多個)大寫單詞?
- 29. 在tn_shell腳本中將小寫轉換爲大寫
- 30. 在C++中將字符轉換爲大寫和小寫
是否有全局配置(或約束中指定的默認正則表達式)來執行此操作? – Ben