以前幫客戶做的站點空間快到期了,那時單獨買了一個只能放一個站點的美國空間,后來轉到另外一個大點的虛擬主機,站點是用Drupal做的,但是轉到新主機后打開主頁正常,但是點開內頁都是404,后來發現是.htaccess文件沒傳上去
問題描述:
“page not found” Errors on every page except homepage.”
也就是說您所建立的drupal站點除了主頁面可以訪問,其它欄目全部訪問顯示為404錯誤頁面.
問題分析:造成這個問題最可能就是因為在新的服務器上的mod_rewrite模塊或者是簡潔鏈接(clean URLs)的錯誤配置(或稱drupal偽靜態)。我們在地址欄中鍵入http://www.example.com/index.php?Q=user檢測mod_rewrite模塊是否正常工作,檢查的方法如下:
如果在您輸入上述地址后出現了登錄頁面,那么我們就可以假設drupal站點的php虛擬主機服務器是沒問題的,只是mod_rewrite模塊沒有啟用。來確定mod_rewrite模塊是否啟用,我們可以建立一個名字為phpinfo.php的文件為您網站安裝環境的php探針,并在這個php文件中加入如下代碼:
<?php phpinfo();?>
保存后,使用FTP上傳到php虛擬主機上drupal站點的根目錄下,然后使用您的網站域名/phpinf.php來執行,你就可以看到您空間的環境配置。
確認mod_rewrite啟用:
在地址欄中輸入http://www.example.com/phpinfo.php查看“Loaded Module (加載模塊)”中有沒有包含mod_write。如果沒有包含的話,也就是說明apache服務器沒有加載這個模塊,更別談開啟了。剛才所創建的phpinfo.php文件保留著,在下面的介紹中,我們還要使用到它。
確認.htaccess文件正常工作
在drupal站點的根目錄下有一個.htaccess文件,首先我們使用FTP登錄到php虛擬主機的根目錄下找到這個文件,下載到本地做個備份。然后再創建一個新的.htaccess文件,并在其中加入如下表達式:
DirectoryIndex phpinfo.php
保存,再使用FTP上傳覆蓋掉drupal站點根目錄下的.htaccess文件,接著在瀏覽器中輸入http://www.example.com(您drupal站點的地址),如果跳轉到phpinfo.php,那么說明您現在站點下的.htaccess文件是正常工作的.
提示:確認完后記得把備份好的.htaccess文件還原現有站點下的.htaccess文件。
細致確認rewrite_base配置:
確認.htaccess文件正常工作后,那我們就來確認一下.htaccess文件中“RewriteBase”和“RewriteEngine” 的配置。(詳情請查看:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html)
成功啟用.htaccess的重寫功能:
如果phpinfo.php沒有顯示的話,定位apache服務器的配置文件并且啟動.htaccess的重寫功能。這個文件的位置會隨著服務器平臺的不同而不同。比方說在Ubuntu服務器上,虛擬主機配置文件在/etc/apache2/sites-enabled/000-default 。通過.htaccess中配置mod_rewrite,apache配置需要允許最低的文件訪問控制權限,為了使這個簡單的目錄索引測試工作,apache服務器需要允許“索引”重寫。在服務器的配置文件中我們可以找到下列兩行:
- <Directory /filesystem/path/to/your/sites/root>
- </Directory>
在這個塊中間不要隨意添加或編輯重寫指令,會造成安全隱患,更多資料可以參考官方文獻:
http://httpd.apache.org/docs/1.3/mod/core.html#allowoverride
允許所有的重寫:
- <Directory /filesystem/path/to/your/sites/root>
- AllowOverride All
- </Directory>
僅僅選擇重寫:
- <Directory /filesystem/path/to/your/sites/root>
- AllowOverride Indexes Options FileInfo
- </Directory> //Vevb.com
現在重載apache配置,這也是因平臺而論的,在Ubuntu平臺下,命令如下:
# /etc/init.d/apache2 reload
接著在瀏覽器中輸入您網站站點的域名,php服務器的配置信息會被展示出來,如果是這樣的話進行修改后就能夠正常的進行訪問了,當您的簡潔鏈接(Clean URLs)不能正常工作,請從“成功啟用.htaccess的重寫功能”開始操作.
Drupal官方技術文檔原文:http://drupal.org/node/228462
新聞熱點
疑難解答