2013-01-19 180 views
0

我已經搜查了很多在谷歌和計算器,但沒有找到完整的答案的用戶頁面...PHP,的.htaccess - 非擴展重定向到指數+用戶名重定向到

什麼即時試圖做的是:

1)將所有非擴展地址重定向到它們的頁面。例如:home - > home.php

2)將用戶名重定向到搜索用戶名的頁面,如果存在,則加載另一個頁面。例如:www.example.com/michael將重定向到go.php並獲取「michael」,如果用戶存在;去user.php?id =邁克爾

它完全像Facebook和Twitter!就好像你輸入「home」一樣,它會進入主頁,如果你輸入你的用戶名,它會發送到你的個人資料!

我該怎麼做這樣的事情?


編輯:也許是第一個斜線到頁面後發送任何東西的.htaccess。例如:

www.example.com/this/is/test 

將是:

www.example.com/index.php?var1=this&var2=is&var3=test 

,然後index.php頁面將決定該怎麼辦...

+0

然後'/ home'是一個固定的字符串。對?如果不是,'www.example.com/michael'和'www.example.com/home'有什麼區別?兩者具有相同的結構並且都具有變量。 –

+0

首頁實際上是一個名爲home.php的頁面,也是像profile - > profile.php等頁面。但是/ michael和任何不是頁面的頁面都會像user.php?id = michael那樣進入頁面,並假設它們是用戶名 –

+0

好的。但是,我想你也希望'profile'也被重定向,例如,除非你願意爲每個名字制定一個規則,否則最好有一個模式來爲所有這些規則制定一條規則,如果可能的話。這只是關於數字1。數字2是清楚的。 –

回答

1

你可以試試這個:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/([^/]+)?/?([^/]+)?/?([^/]+)?/? [NC] 
RewriteRule .*  index.php?var1=%1&var2=%2&var3=%3 [L] 

無聲地圖

http://www.example.com/this/is/test

http://www.example.com/index.php?var1=this&var2=is&var3=test

所有參數都是可選的最多的3

如果需要更多的,在

右端爲每一個加入([^/]+)?/?RewriteCond %{REQUEST_URI}

行並添加鍵(varN)相應地在RewriteRule中的index.php查詢中,使用%N來反向引用它們。

+0

那麼它說沒有找到頁面! :( –

+0

請將您輸入的網址複製粘貼到評論中 –

+0

請使用[R]代替[L],以便您看到重定向的URL。這是一個臨時修改,以確定它是否正確重定向。 –