網際網路似乎是一個美麗的地方。不是嗎?
對于我們自己的網站,URL http://www.bieryun.com/page/2将帶您進入文章的網際網路類别的第二頁。盡管看起來很簡單,但這并不适用。原始網址可能類似于
http://www.bieryun.com/blog.php?category=internet&page=2但是這樣的網址實際上不友善記憶,是以我們使用前面提到的網址。是以,在本文中,讓我們了解如何使用apache的
mod_rewrite或
a2enmod建立漂亮的URL ,就像調用它一樣。
在我們開始之前,我假設你知道apache伺服器是什麼,并且已經使用PHP等伺服器腳本語言在網站上工作。
是以我們将在apache上使用URL重寫子產品。它應該預設啟用。如果不是,你可以删除讀取行前面的
#号LoadModule rewrite_module modules / mod_rewrite.so
來自位于
xampp / apache / conf中的
httpd.conf檔案
對于Linux系統,以下指令将啟用它 -
sudo a2enmod rewrite
在這之後,重新啟動你的apache伺服器。
現在我們需要建立一個名為
.htaccess的檔案來完成我們的URL重寫工作。是以,隻需建立一個名為
的檔案并儲存在根目錄中即可。
你可以看到我有一個
檔案和一些其他的PHP檔案。 現在讓我們打開.htaccess檔案并編寫一個簡單的重寫規則。
是以,讓我們假設您有一個配置檔案頁面,目前情況是這樣的:當有人通路配置檔案頁面時,他們實際上通路了名為
profile.php的檔案 ,URL欄顯示URL為
www.websitename.com/profile.php。
為了讓它在眼睛上更容易一些,如果我們可以删除.php擴充名會更好。要做到這一點,我們會寫出這樣的規則。
RewriteEngine On
RewriteRule ^profile/?$ profile.php [NC, L]
讓我們打破這一點。
- RewriteEngine On 是在你的 檔案中寫入的第一件事。這需要每個檔案隻在一開始寫一次。這隻需将URL重寫為引擎開啟即可。
- RewriteRule 定義了一條新規則,任何後面的規則都被認為是URL重寫規則
- ^ profile /?$ profile.php 如果你有正規表達式的經驗,你必須已經知道這一點。字元串'個人資料'比對,如果比對,則提供檔案profile.php。
由于我現在在我的本地主機上,這看起來類似于 -
您可以在上面看到,當我通路我的Web浏覽器上的URL
localhost / profile時,我可以通路URL
localhost / profile.php檔案。是以這就是它的工作原理。
- [NC,L] 這些實際上是表示特殊含義的标志。 NC表示 不區分大小寫它告訴Apache忽略小寫字母和大寫字元。是以,即使你輸入 localhost / PRofiLE, 你也會看到相同的結果。如果您不包含NC标志,您可能會在某些情況下收到URL未找到的錯誤。 L 标志告訴Apache,這是最後一次檢查。如果這是比對的,則不需要檢查其他RewriteRule。
是以這是一個URL重寫的簡單例子。現在讓我們說你想通過GET方法傳遞參數。通路某人的個人資料頁面的簡單擷取方法URL就是
localhost/profile.php?username=john
當重寫這個URL時,如果我們可以将它轉換成真的很酷
localhost/profile/john
這将更容易記住,也更清潔。為了實作這一點,我們需要以get變量的形式将username參數傳遞給配置檔案頁面。
RewriteRule ^profile/([A-Za-z0-9-]+)/?$ profile.php?username=$1
文法與我們之前做過的類似,但是您可以注意到我們已經在這裡通過了username參數。
([A-Za-z0-9 - ] +)意味着該字元
集中的任何字元都将被接受。
profile.php?username = $ 1意味着profile.php頁面将被提供并且一個名為username的GET變量将被傳遞,這将在
profile /後面輸入
您可以看到get變量傳遞給用于顯示輸出的配置檔案頁面。
如果您想要傳遞更多變量,假設您想要一個類似于的URL
産品/食品/ 2您可以使用以下Rewriterule
RewriteRule ^profile/([A-Za-z-]+)/([0-9-]+)/?$ products.php?category=?$1&page=$2
你可以看到我們添加了正斜杠和後來的另一個字元集條件。您可以在規則的右側看到URL使用$ 1和$ 2作為GET變量,這些變量的設定優先于它們在重寫URL中的外觀。同樣,您可以使用$ 3,$ 4等。
結論
是以我們讨論了URL重寫并學習了一些技巧。這隻是一個讓你開始的基本教程。從apache自己的網站可以找到更全面的指南。