2010-05-13 163 views
0

我已經創建了一個PHP分頁系統,但是我想在地址欄中隱藏_GET變量。在地址欄中隱藏文件

目前礦山看起來像這樣:http://example.com/images.php?page=1

但我已經看到了有http://example.com/images/1/幾個網站。

只是想知道他們如何去做這件事?任何人都可以將我指向正確的方向嗎?乾杯

+1

您接受比例很低,我建議你接受一些更多的答案。 – 2010-05-13 13:44:08

回答

6

您將需要從您的網絡服務器的支持,以獲得正確的請求,並在內部改寫/images/1/的請求/images.php?page=1訪問它。大多數Web服務器有一個模塊或擴展來支持這樣的行爲就像Apache’s mod_rewritelighttpd’s mod_rewriteISAPI Rewrite module for ISS

+0

謝謝,知道它可以完成,我只是不知道要搜索什麼讓我開始。 – michael 2010-05-13 13:43:55

+0

@micheal:這種技術被稱爲URL/URI重寫。 – Gumbo 2010-05-13 13:45:51

1

這就是所謂的PATH_INFO

服務器必須支持它,並啓用它。

如果確實如此,那麼你可以使用$_SERVER["PATH_INFO"]

+0

這不是什麼PHP_INFO ...這叫做mod_rewriting。 – user97410 2010-05-13 13:39:13

+0

大聲笑甚至沒有時間去編輯它:V – 2010-05-13 13:40:00

+0

刪除這個答案,否則你會後悔的。 – zaf 2010-05-13 13:41:01

0

大多數框架照顧它,但你需要配置你的Web服務器來處理它。以下是關於設置Apache htacces的說明from CodeIgniter

0

如果你的服務器是Apache,你可以創建一個文件名爲的.htaccess(它沒有文件名,只有一個擴展 - 值得在本地機器上給它起一個名字,因爲有些文件系統會隱藏沒有名字的文件),並學習如何使用RewriteRules

這很容易用於簡單的重寫,就像你想要的。

樣本.htaccess文件:

RewriteEngine On 

#Translate http://address.com/images/1/ to http://address.com/images.php?page=1 
RewriteRule ^images/(.*)$/images.php5?page=$1 
+0

此規則在.htaccess文件中不起作用。 – Gumbo 2010-05-13 13:47:19

0

通常所有的請求重定向(其網址是內部rewrited)採用Apache mod_rewriteRewriteEngine,然後(在腳本)單PHP腳本的URL檢查和處理程序匹配這個URL(如果有更多的處理程序)與相應的參數被調用。 PHP中的一些框架,通常是MVC ones,完全建立在一個單一的index.php上,所有請求都被「重定向」(URL重寫)。

如果你只需要與?page=來解決這個問題,嘗試在Apache的配置與此URL重寫以/images/1//images.php?page=1(如濃湯建議)(的的.htaccess文件爲例):

RewriteEngine on 
RewriteRule ^images/([0-9]+)/?$ images.php?page=$1 [L]