2014-03-07 73 views
0

我想知道如何重寫網址,例如本網站的作品。我的意思是我不認爲這是通過。在Apache或Nginx modrewrite。我感興趣的是一個id和用戶友好的標題。它是如何工作的,如果服務器只輸入id或標題錯誤的id,那麼301會將其重寫爲正確的?URL重寫像Stackoverflow,XenForo,IPBoard

是否有任何關於它的方法我無法找到,或者可以用一個小例子來解釋它嗎?

例如:

-index.php 
|--index.php?page=2 
-server.php?id=45343 
-contact.php 



-example.com/ 
|--example.com/page/2 
-example.com/server/45343/some-random-title-to-be-user-friendly(.html) 
-example.com/contact(.html) 

更新:

我想知道這是如何工作沒有modrewrite(htaccess的..),因爲我知道,例如xenforo不使用它。

回答

0

我不確定這是否是在StackOverflow(可能是)上完成的方式,但我有一個類似的代碼工作。

基本上,您在URL中看到的所有目錄(問題/ 22239304 /標題)並不存在,它們都是虛擬的。根目錄中的.htaccess文件會重寫所有對PHP文件的訪問,然後決定如何處理它。 URL最重要的部分是ID - 如果它具有ID,它也具有數據庫條目並且可以獲得正確的標題。如果它在URL中不正確,它可以簡單地重定向,如果不是,它將服務器頁面。

這裏是所有的流量都重定向到index.php的一個例子的.htaccess(可能要更具體,例如,有一個僅與他們的提問「相匹配的URL規則):

RewriteEngine On 

RewriteRule ^redir.php$ redir.php [L,QSA] 
RewriteRule ^(.*)$ redir.php?q=$0 [L,QSA] 

然後在redir.php文件你會看$ _SERVER [「QUERY_STRING」]並適當地解析它。

+0

mhh。我想知道如何在沒有modrewrite的情況下工作,我確定xenforo和IPBoard在htaccess中沒有使用任何modrewrite。也許stackoverflow是一個不好的例子。 :( – user2693017

+0

http://xenforo.com/help/friendly-urls/在我看來他們使用.htaccess。如果沒有,那麼他們只是有相同的'友好的URL'直接傳遞到PHP文件。例如' index.php?question/111/blah' –

+0

好吧,它是如何工作的,如果你輸入任何不同的網址,但具有相同的ID,你會被重定向到正確的?'http://www.example.com/threads/它有趣的改變this.12345 /' - >'http:// www.example.com /線程/線程標題 - 在這裏.12345 /' – user2693017