[edit] SEO 原理
搜尋引擎最佳化(Search Engine Optimization)的原理:搜尋引擎(Search Engine)使用Robot(Agent)根據網域名稱、網址或來自其他網站的連結,檢視並判斷分析網站內所有的網頁內容, 讓搜尋引擎將其獲得資訊整理並放置在其平台上供用戶查詢。
簡單的說,將網站的內容最佳化讓搜尋引擎可以正確、簡單判斷您的商店的網頁內容,使您的商店更容易被各搜尋引擎找到,並且盡可能很快速的讓網路用戶瀏覽使用。如此,您的商店的曝光率及搜尋引擎關鍵字排名便能獲得提昇。
以下列出當你使用 xt:Commerce 作為網路商店時可能會發生的問題及解決方案:
[edit] url 連結問題
[edit] 檢查伺服器是否在 Apache 已經設置啟用 mod_rewrite
- 對策 1: 從 xt:Commerce 管理平台檢視
登入到 xt:Commerce 管理平台,工具->伺服器資訊->點選 PHP Info 書籤。
你可以在 "Loaded Modules" 內容中找到是否有 "mod_rewrite" 在其中。
- 對策 2: 撰寫一個內含 phpinfo() 的 php 程式
事實上這和對策1相同,當你尚未安裝 xt:Commerce 之前可以用這個方法來確認web環境。
<?Php
echo phpinfo();
?>
[edit] 測試 mod_rewrite 是否已在 web 正確的運作
儘管 mod_rewrite 已經配置了,但它仍可能不能正常運作。
你可以在商店的網域根目錄中找到 .htaccess 檔,並加入以下內容:
RewriteEngine On RewriteRule ^ http://www.google.com [R, L]
當你使用瀏覽器進入你的商店,例: http://yoursite.com/shop/ ,
如果它會轉到 http://www.google.com ,表示 mod_rewrite 可以正常運作。
如果不行,請試著依下列對策排除問題:
- 對策 1:請依上一個問題(檢查你的伺服器或租用的虛擬主機是否在 Apache 已經設置啟用 mod_rewrite),再檢查一次。
- 對策 2: httpd.conf 內的 "AllowOverride" 沒有正常設置
在 httpd.conf (這個環境檔在你的 Apache web 伺服器內),你必須在 <Directory>...</Directory>內設定 "AllowOverride" 參數。
但當你的商店是租用虛擬主機,或者是同一個網域內存在各不同的功能平台時,就儘量不要直接在 httpd.conf 內設定 "AllowOverride" ,你可以透過設定 .htaccess 檔案來使該 web 目錄受到影響即可。
如果你的 httpd.conf 已經設定 AllowOverride
請在 .htaccess 檔案內設定 AllowOverride 參數,並置於<Directory>...</Directory>內。
AllowOverride FileInfo
有的 web 伺服器環境必須設定為All,所以如果 "AllowOverride FileInfo" 無法順利作用,請試著設定以下:
AllowOverride All
註:你也必須將商店的路徑寫在<Directory>內,例:
<Directory /www/your-shop/htdocs> ... AllowOverride All ...</Directory>
一些 Web 的環境設置 (或如果商店是在子目錄下執行) 必須有 "RewriteBase" ,所以在一開始設定 mod_rewrite 時就應該將它也一起寫入。
依下列編碼寫入到 .htaccess 檔案內:
RewriteEngine On RewriteBase / RewriteRule ^ http://www.google.com [R, L]
假設商店是位於 /shop 子目錄內,你可以寫成 RewriteBase / shop。
[edit] 當進入商店時,頁面卻顯示: 403-Forbidden
使用 .htaccess 來設定 mod_rewrite 的好處是可以局部定義環境組態,比起使用 httpd.conf 全域環境組態來的具有彈性(要確定 AllowOverride 正確地被設置- 測試 mod_rewrite 是否可以正確運作),但是 FollowSymLinks 組態(伺服器流程符號連結)卻有可能是關閉的狀態。
而有些伺服器需要指定這個組態,mod_rewrite 才能正確運作。
- 對策 1: 啟用 FollowSymlinks 組態
在 .htaccess 檔案中加入以下描述(或者是將以下描述移除)
Options + FollowSymlinks
以上描述最好是作在 .htaccess 檔案內,當然你也可以作在 httpd.conf 內,但有可能在同伺服器上的其它平台會發生錯誤訊息:500-Internal Server Error。
如果因某項因素,你的伺服器環境仍是必須作在 httpd.conf 內,可以參考以下內容:
<Directory /www/your-shop/htdocs>
...
Options + FollowSymlinks
...
</Directory>
如果你沒有權限存取 httpd.conf (大部份的虛擬主機都不會讓你擁有這樣權限),請去電詢問你的主機供應商如何排除 FollowSymlinks 所造成的問題。
[edit] 當進入商店時,頁面卻顯示: 404 error-Page not found
當商店的位置是放在 web 的子目錄時(例: www.your-shop.com/shop ) ,很容易就會有這樣的問題,原因是在 .htaccess 檔案內的 "RewriteBase" 組態設定有誤。
需要設定 "RewriteBase" 的時機:如果目錄有轉換或變動時,不是實體路徑名稱(例如:你使用了一個目錄別名),那就必須告訴 mod_rewrite 可以轉至該位置的名稱。
在商店根目錄下的 .htaccess 檔案,作下列組態的變動:
RewriteEngine On
RewriteBase /<商店所處的目錄名稱>
什麼是<商店所處的目錄名稱>,例如: "RewriteBase /shop"
如果所有的連結都能夠正確作用,卻偏偏有1,2個連結會發生 404 找不到頁面的錯誤訊息,檢查自己所作的 URL (404 的錯誤原因),如下列的關鍵詞:
- Admin
- cache
- callback
- download
- export
- images
- import
- inc
- includes
- media
- lang
- pub
- templates
- templates_c
註:本錯誤已經收錄到最新版的補丁中。
如果上述的關鍵詞其中的一個 URL 發生了錯誤,你可以依照下列的描述檢查是否疏漏了什麼:
RewriteRule ^ # admin | cache | callback | download | export | images | import
| inc | includes | media | lang | pub | templates | templates_c-[L]
[edit] 當進入商店時,頁面卻顯示: 500 error-Internal Server Error
如果 web 配置不當,或許就會發生此錯誤: 500 error-Internal Server Error,這個問題大多是 .htaccess 及 httpd.conf 的組態設定錯誤所致。
- 對策 1: 在 httpd.conf 內作了禁止權限等相關設定。
如果你在 .htaccess 內啟用了 "Options + FollowSymlinks" ,它將會覆寫原先在 httpd.conf 檔案的組態,但這有可能在某些伺服器上不被允許,這就是發生 500 錯誤的主因。(請參考之前的 403 錯誤)
首先要作的當然將 .htaccess 內的 "Options + FollowSymlinks" 移除掉。(因為大部份的 web 伺服器環境都不需要設定這個項目)
如果這樣還是無法成功修復問題,就必須作 Apache 相應修改,如果你可以存取 httpd.conf ,請在<Directory /www/your-shop/htdocs> ... </Directory> 內加入:
Options + FollowSymlinks
如果你沒有權限存取 httpd.conf (大部份的虛擬主機都不會讓你擁有這樣權限),請去電詢問你的主機供應商如何排除這個問題。
- 對策 2: 請確定 .htaccess 是以 ANSI 編碼儲存並以 ASCII 模式上傳
.htaccess 檔案必須是以 ANSI 編碼格式(標準)儲存,而且上傳到 web 伺服器必須是以 ASCII 模式上傳, 你可以在 FTP client 端的傳輸設定中找到 (ASCII / Binary) 傳輸模式。
[edit] 當進入商店時,頁面卻顯示: Error! Unable to determine the page link!
這個錯誤訊息與 xt:Commerce 建立了一個沒有指定檔名的連結有關。
- 對策: 修改 "xtc_href_link.inc.php" 檔案
請開啟 xt:Commerce 商店目錄內的 /inc/xtc_href_link.inc.php ,解決這項錯誤。
註:這個錯誤已經在最新版的 xt:Commerce 修正
找到下列內容:
if (!xtc_not_null($page)) {
die('Error! Unable to determine the page link!');
}
並且以下列內容來取代:
if (!xtc_not_null($page)) {
// WORKAROUND FOR SOME SERVERS WITH WRONG httpd.conf
$page='index.php';
}
|