2016-09-16 156 views
0

我的問題是我想爲.htaccess文件編寫自己的規則。我搜查了互聯網,他們沒有告訴我如何編寫我自己的具體規則。我所知道的是它使用正則表達式。我對正則表達式知之甚少。將URL重寫爲全部小寫字母,並使用.htaccess文件將某些URL重定向到主頁

我所尋找的是我有以下鏈接

http://example.com/work/project-1 
http://example.com/work/project-2 

當用戶輸入這樣

http://example.com/work/PrOJect-2 

我希望他們重定向到(將所有瓶蓋小)

http://example.com/work/project-2 

但是當用戶這樣輸入時

http://example.com/work/ 

http://example.com/work 

我想重定向到主頁。

爲了這樣做我有htaccess文件 其中有像

RewriteEngine On 
RewriteRule ^work(.*)/([^/]*) work-single.php$1?slug=$2 [QSA] 

一些規則,請幫我寫這些規則。

+0

我不熟悉編輯的.htaccess但似乎你要根據你輸入的URL重定向 - 看看http://yourls.org/這是一個鏈接用php編寫的縮短網站,查看輸入的url與mysql數據庫進行比較並重定向 - 它可能會給你一些想法 – kerry

回答

0

你試圖實現的稱爲URL重寫。

這裏的一個工作.htaccess文件的一個例子:

RewriteEngine ON 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?url_params=$1 [L,QSA] 

使用設定在上述規則的結果是,從請求完整的URL被傳遞在服務器側的index.php ,其中所述串可以使用提取:

$urlString = $_GET['url_params']; 

和進一步處理,例如一個切片串入令牌的陣列:

$urlTokens = explode('/', $urlString); 

foreach($urlTokens as $token){ 

    // do something with each token 

} 

最後分析令牌(現在大多數人沒有真正手動執行的任務,因爲使用了自動處理這個問題的框架。例如Zend框架),爲每個有效的「標記」採取適當的行動(在現代框架中稱爲「路由」)。

對於一個完整的教程如何設置URL重寫,您可以檢查: https://code.tutsplus.com/tutorials/using-htaccess-files-for-pretty-urls--net-6049

它可以是非常簡單的,或完全複雜 - 取決於你的需要。

請記住,這只是一個示例,可能無法滿足您的具體情況,您可能需要對其進行定製以滿足您的需求 - 或者至少從中學習並解決問題。

我建議您閱讀並學習更多關於這個主題,它會讓您更容易地使用該技術。

希望它可以幫助一點

相關問題