新聞中心
無憂主機(jī)原創(chuàng)drupal技術(shù)文檔翻譯:使用Clean URLs(簡潔鏈接)實(shí)現(xiàn)Drupal偽靜態(tài)
無憂主機(jī)(www.gle-technology.com)小編應(yīng)客戶需求,將不間斷的,嘗試翻譯一些drupal官方技術(shù)文檔資料,方便您對該cms系統(tǒng)的學(xué)習(xí),歡迎廣大drupal愛好者閱讀、指導(dǎo)。本文為無憂主機(jī)原創(chuàng)翻譯技術(shù)文檔,轉(zhuǎn)載請注明出處。 無憂主機(jī)關(guān)于drupal偽靜態(tài)設(shè)置的官方英文技術(shù)文檔譯文如下: Drupal默認(rèn)情況下為網(wǎng)站頁面生成的地址看起來像“http://www.gle-technology.com/?q=node/83”。這種類型的地址不僅難以讀懂而且會讓很多搜索引擎讀不到您網(wǎng)站所有頁面的索引。研究表明這對搜索引擎來說是一個很大的問題,當(dāng)然谷歌瀏覽搜索引擎是沒問題的,而且搜索引擎對.html靜態(tài)文件的收錄非常友好,那么我們將含有“?q=node/83”的動態(tài)url地址,通過服務(wù)器mod_rewrite模塊將其偽裝成靜態(tài)頁面(.html)輸出,這個過程我們稱之為偽靜態(tài)。 如果您對drupal默認(rèn)的urls不滿意,您可以使用“Clean URLs”取消您網(wǎng)頁地址中的”?q=”。現(xiàn)在這編文章將會引導(dǎo)您如何開啟”Clean URLs”。這編文章很大程度上僅適用于一些流行的unix/linux系統(tǒng)下運(yùn)行著apache網(wǎng)站服務(wù)器,當(dāng)然還要對apache服務(wù)器的mod_rewrite模塊進(jìn)行設(shè)置和在httpd.conf配置文件中mod_rewrite開啟并進(jìn)行設(shè)置。 在開始Clean URLs之前,我們要做些工作讓Clean URLs可以在您的服務(wù)器上工作。這個時(shí)候我們分兩種情況。第一種,您擁有您服務(wù)器的最高管理權(quán)限,例如:您在您的個人電腦上安裝的服務(wù)器,或者您有專業(yè)服務(wù)器的托管賬戶,這個時(shí)候,您可以在httpd.conf文件中開啟clean urls以得到更好的效率和安全性。然而,當(dāng)您使用的是在DreamHost、BlueHost、無憂主機(jī)(www.gle-technology.com)等php虛擬主機(jī),您是沒有修改服務(wù)器httpd.conf(apache配置文件)配置文件的。那么,你需要使用drupal文件根目錄的.htaccess文件來達(dá)到相同的效果,當(dāng)前提下,你的所使用的php虛擬主機(jī)服務(wù)器必須開啟mod_rewrite模塊。如果你對htaccess(偽靜態(tài)正則表達(dá)式)文件不了解,你可以閱讀另一篇專門介紹htaccess的技術(shù)文檔:“無憂主機(jī)原創(chuàng):手把手介紹什么是.htaccess文件”。 在Drupal上開啟簡潔鏈接 注釋:在標(biāo)準(zhǔn)的drupal安裝中包含了一個樣本.htaccess文件,這個文件是已經(jīng)支持了Clean URLs功能。這個文件因?yàn)樗奶厥庑詫?dǎo)致它很容易丟失。所以在您試圖開啟Clean URLs開啟之前請確認(rèn)這個文件是否存在您安裝的文件夾之中(.htaccess文件一般在文件夾的根目錄)。如果沒有.htaccess文件,請參照“無憂主機(jī)總結(jié)如何新建.htaccess文件的方法”一文自行建立。 Drupal 7.x 在drupal7的版本中,安裝drupal 7.x框架核心過程中會測試Clean urls的兼容性做為安裝的一部分。如果測試環(huán)境兼容性是良好的,開啟Clean urls功能會被安裝在安裝drupal 7.x核心的安裝過程中,這個時(shí)候我們就不用做過多的操作了。 如果您需要在裝配drupal 7.x框架核心后開啟Clean urls,當(dāng)您在Clean urls配置頁面配置開啟簡潔鏈接(管理員>配>Search and metadata)drupal會自動的進(jìn)行簡潔鏈接的測試,展示測試結(jié)果,并允許您保存配置。 您可以按照如下步驟開啟或關(guān)閉這項(xiàng)功能: 1:瀏覽到Clean urls配置頁面(管理員>配置>Search and metadata)。 2:等待自動檢測運(yùn)行。 3:按下或者不按下開啟Clean urls(簡潔鏈接)的按鈕。 4:按下“保存設(shè)置” 即使您的Clean urls功能在安裝核心的過程中被成功的安裝,如果您有一個專業(yè)的服務(wù)器,您可能還要按照以下的步驟在httpd.conf文件中開啟更加有效的重寫方法來讓Clean urls工作的更加有效率。如果您選擇這么做,那么在您工作在您專業(yè)的服務(wù)器上時(shí),您就要關(guān)閉Clean urls(簡潔鏈接)功能。 Drupal 6.x 在drupal 6.x中依然在安裝drupal 6.x框架核心過程中檢測Clean urls(簡潔鏈接)功能的兼容性,如果在安裝drupal 6.x框架核心過程不能正常開啟Clean urls( 簡潔鏈接 )功能,您可以參考下面為drupal5.x版本啟動開啟Clean urls(簡潔鏈接)功能的方法開啟drupal 6.x的Clean urls(簡潔鏈接)功能。它們間僅有一個教小的區(qū)別:在drupal 6.x版本中在您瀏覽到Clean urls配置頁面時(shí)會自動的檢測Clean urls功能,并會提供一小段鏈接地址讓您手動的進(jìn)行測試。 注備:即使您的Clean urls功能在安裝核心的過程中被成功的安裝,如果您有一個專業(yè)的服務(wù)器,您可能還要按照以下的步驟在httpd.conf文件中開啟更加有效的重寫方法來讓Clean urls工作的更加有效率。如果您選擇這么做,那么在您工作在您專業(yè)的服務(wù)器上時(shí),您就要關(guān)閉Clean urls(簡潔鏈接)功能。 Drupal 5.x 這里將告訴您在drupal 5.x版本中如何正確啟動Clean URLs的步驟。 1:登錄至Clean urls(簡潔鏈接)管理員接口區(qū)域(管理員>站點(diǎn)配置>Clean URLs) 2:找到與下列相對應(yīng)的段落: “This option makes Drupal emit "clean" URLs (i.e. without ?q= in the URL.) Before enabling clean URLs, you must perform a test to determine if your server is properly configured. If you are able to see this page again after clicking the "Run the clean URL test" link, the test has succeeded and the radio buttons above will be available. If instead you are directed to a "Page not found" error, you will need to change the configuration of your server. The handbook page on Clean URLs has additional troubleshooting information. Run the clean URL test. ” 3:點(diǎn)擊測試Clean URLs(簡潔鏈接)功能的鏈接在上述段落的末尾。 4:如果第三步測試成功,配置Clean URLs(簡潔鏈接)功能啟用并保存配置。如果測試不成功,按照一下步驟配置好您的服務(wù)器配置并且再次測試。 錯誤校正 如果您服務(wù)器的不正確配置可能會在您開啟Clean URLs(簡潔鏈接)功能后但在瀏覽器中顯示的間接鏈接又不是完全正確的時(shí)候會讓您很難回到管理員頁面來撤銷您的錯誤配置,因?yàn)閐rupal生成的菜單和鏈接都有不能正常工作的鏈接地址。如果您在這個麻煩的境遇中,在drupal4.0版本中您可以通過非簡潔鏈接地址http://www.example.com/?q=admin/settings回到管理員頁面,在drupal 5.0和6.0版本中使用http://www.example.com/?q=admin/settings/clean-urls回到管理員配置頁面。 當(dāng)然我們還可以通過在數(shù)據(jù)庫中運(yùn)行數(shù)據(jù)庫命令來撤銷錯誤配置: Update variable SET value='s:1:"0";' where name='clean_url'; DELETE FROM cache; 此外還此以在../sites/default/目錄下的setting.php文件的最下端加入“$conf['clean_url']=0;”來撤銷錯誤的配置。 在專業(yè)服務(wù)器上通過配置httpd.conf來啟用CleanURLs(簡潔鏈接) 1:開apache服務(wù)器上開啟mod_rewrite。這里我們可以在閱讀(http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html)知道更多開啟mod_rewrite的資料。至少您需要確定mod_rewrite在您的apache服務(wù)器上是開啟了的。在apache中測試mod_rewrite是否可以用,您可以在命令框中輸入"apache2ct1 -M"來列出您所有的apache模塊,另一些系統(tǒng)需要"apachect1 -M"來列出。最后再是確認(rèn)rewrite_module是否包含在列出的模塊列表中。 如果在列出的apache列表中沒有包含rewrite_module這個模塊,那么您可以選擇內(nèi)建或者是讓它作為可裝載使用的模塊,換句話說,您告訴您的apache服務(wù)器通過: LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c 這兩行命令代碼去裝載這個模塊。 在您apache配置文件中,如果AddModule mod_rewrite.c已經(jīng)被注釋了,請務(wù)必取消注釋AddModule mod_rewrite.c,保證模塊關(guān)聯(lián)。接下來我們可以在不需要編輯任何文件的情況下,通過我們可以使用命令代碼:"a2enmod rewrite"開啟這個模塊。 注釋:當(dāng)然這些不會作用于所有的操作系統(tǒng)和apache服務(wù)器,聯(lián)系您的軟件提供商獲取更進(jìn)一步的信息。 最后記得重啟您的apache服務(wù)器。 2:確認(rèn)為您網(wǎng)站工作的apache配置文件。 這個文件可以是httpd.conf,vhost.conf或者apache2.conf。它們通常在/etc/httpd/conf,/etc/apache2,或者是子目錄。如果還是找不到請用fint /etc -name httpd*命令進(jìn)行查詢。 3:復(fù)制下列文件到您的apache配置文件中。 <Directory /var/www/example.com> RewriteEngine on RewriteBase / RewriteCond%{REQUEST_FILENAME} !-f RewriteCond%{REQUEST_FILENAME} !-d RewriteRule^(.*)$ index.php?q=$1 [L,QSA] </Directory> 當(dāng)然如果您不愿意把把上述代碼塊復(fù)制到您的apache配置文件中,也可以把上述代碼塊放到drupal的根目錄下的.htaccess文件中。做這項(xiàng)操作您需要在apache配置文件中加入 AllowOverride All AccessFileName .htaccess 這兩行。 在共享服務(wù)上通過配置.htaccess支持Clean URLs 標(biāo)準(zhǔn)的drupal安裝中包含了一個樣本.htaccess文件,這個文件是已經(jīng)支持了Clean URLs功能。這個文件因?yàn)樗奶厥庑詫?dǎo)致它很容易丟失。所以在您試圖開啟Clean URLs(簡潔鏈接)開啟之前請確認(rèn)這個文件是否存在您安裝的文件夾之中(一般在文件夾的根目錄)。 Drupal偽靜態(tài)常規(guī)問題 在您網(wǎng)站的.htaccess中apache需要嚴(yán)格的指令規(guī)范。.htaccess默認(rèn)是被關(guān)閉的,雖然很多空間主機(jī)商會將它設(shè)置為開啟。在apache的配置文件中加入AllowOverride ALL就是讓您的.htaccess能夠正常的工作。 檢測您的.htaccess是否正確工作的方法就是在.htaccess中加入一段垃圾字符串,然后您在打開您的網(wǎng)站會顯示"500 sever error",那.htaccess是正常的為您的網(wǎng)站工作,當(dāng)然確認(rèn)后,您要把這段垃圾字符串刪掉。 如果在加入垃圾字符串之后并沒有出現(xiàn)"500 server error"錯誤,也就是說您網(wǎng)站下的.htaccess被忽略了,此時(shí),向您的空間服務(wù)商請求幫助?;蛘咴赼pache的配置文件(httpd.conf)開啟支持,當(dāng)然有些空間服務(wù)商是支持您自行在控制面板中修改的,所以您先到那是修改一下。 RewriteBase 配置 RewriteBase對您網(wǎng)站來說是一個很關(guān)鍵的配置項(xiàng)。它可以在.htaccess和httpd.conf中配置,這取決于您的正確重寫指令放在哪個文件中。默認(rèn)情況下,RewriteBase在.htaccess中是被注釋了的,而且它和其它配置結(jié)合起來使用效果非常不錯。 如果您在開啟Clean URLs中遇到困難,您需要這樣進(jìn)行修改。 打個比方,如果您的網(wǎng)站根目錄是/var/public_html/(在您的瀏覽器中只要輸入www.例子.com就能進(jìn)行訪問您的網(wǎng)站),或者您的網(wǎng)站在子目錄中/var/public_html/my_site,這樣的話RewriteBase就該這么設(shè)置:RewriteBase /mysite? 或者? Rewrite /。 $base_url 您可以在setting.php文件中手動的設(shè)置$base_url變量,當(dāng)它沒有被設(shè)置的時(shí)候。(http://bugs.php.net/bug.php?Id=19656) drupal多站點(diǎn)配置 RewriteBase僅工作在單站點(diǎn)的服務(wù)器上,或者是您的網(wǎng)站是具有相同的子目錄域名。 例如: RewriteBase / #會工作在http://www.example.com/ #http://www.example1.com/這樣形式的網(wǎng)址中工作正常。 RewriteBase /mysite #會工作在http://www.example.com/mysite #http://www.example2.com/mysite這樣形式的網(wǎng)址中工作正常。 當(dāng)然如果您的網(wǎng)站具有復(fù)雜的子目錄結(jié)構(gòu),RewriteBase就如上設(shè)置的話是不會起效果。您必須為您的子目錄添加一些特別的語言法則。語法如下: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^/mysite/(.*)$?? //mysite改成您的域名 RewriteRule ^(.*)$ /mysite/index.php?q=$1 [L,QSA] 之前必須存在重寫規(guī)則。 對INDEX.PHP進(jìn)行定位 首先,在您網(wǎng)站的.htaccess找到RewriteRule ^(.*)$ index.php?q=$1 [L,QSA],您要做的就是把這段正則表達(dá)式中的index.php換成您安裝drupal目錄下的index.php的路徑(除去基地址)。更進(jìn)一步說,您網(wǎng)站的主頁是http://www.example.com/mysite/,您只要將index.php換成/mysite/index.php。當(dāng)然如果您的網(wǎng)站是http://www.example1.com/,那么index.php就換成/index.php。當(dāng)然這只是適合一些服務(wù)器配置,并不是所有的服務(wù)器都支持這么干。 通過使用路徑模塊來生產(chǎn)更加簡潔的URLs 用簡潔鏈接可以讓drupal生成"http://www.example.com/node/83",為了把"node/##"改寫成"news/june-1st-news",我們需要使用路徑模塊詳情請查閱(Path: readable URLs http://http://drupal.org/documentation/modules/path)。 譯文完。譯文來源于drupal官方技術(shù)論壇: http://drupal.org/getting-started/clean-urls 無憂主機(jī)更多關(guān)于drupal基礎(chǔ)入門文檔,請點(diǎn)擊:drupal開源內(nèi)容管理系統(tǒng)(CMS)學(xué)習(xí)閱讀。 學(xué)習(xí)Drupal入門技能:無憂主機(jī)原創(chuàng):drupal圖文安裝教程 純Linux環(huán)境下高端免備案【香港獨(dú)立IP地址】 php空間,僅僅只需199元一年起。商務(wù)中國域名核心代理直銷50元注冊國際頂級域名
本文地址:http://www.gle-technology.com/drupal/6588.html