1. พอเพิ่มหมวดหมู่แล้วคนที่ใช้ URLMethod2 ต้องไปแก้ .htaccess ตามที่ pligg เจนให้ด้านล่าง อันนี้คิดว่าคนที่เล่นอยู่คงเข้าใจอยู่แล้ว (ผมเพิ่งลองก็ไม่เข้าใจ เหอๆ)
2. ปัญหาคือพอใช้หมวดหมู่ไทยก๊อปไปวาง .htaccess แล้วมันดันเน่า
- สาเหตุมันมาจาก RewriteRule ที่ pligg มันเจนมาให้นั้นมัน encode ภาษาไทยให้เสร็จสรรพ
แต่ผมไม่ทราบสาเหตุนะ ผมลองแก้ชื่อหมวดหมู่ให้เป็นแบบที่ไม่ได้เข้ารหัส มันดันได้ ไม่ทราบว่า apache มันเห็นเป็นแบบ encode หรือ decode แต่เครื่องผมมันเห็นแบบ decode
ทดสอบลองแก้ .htaccess จากที่ pligg มันเจนให้มา จะเห็นที่มันเข้ารหัสไว้ ลองแก้เป็นภาษาไทยแบบไม่เข้ารหัสเลย
อย่าง
RewriteRule ^(all|pligg|%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%8C%E0%B8%95%E0%B8%B9%E0%B8%99)/([^/]+)/?$ story.php?title=$2 [L]
RewriteRule ^(all|pligg|%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%8C%E0%B8%95%E0%B8%B9%E0%B8%99)/?$ ?category=$1 [L]
ก็แก้เป็น
RewriteRule ^(all|pligg|การ์ตูน)/([^/]+)/?$ story.php?title=$2 [L]
RewriteRule ^(all|pligg|การ์ตูน)/?$ ?category=$1 [L]
ทดสอบแล้วใน
- IE6 (ของโปรแกรม MultipleIE)
- IE7
- Firefox3
- Opera9
- Google Chrome
วิธีนี้มันดิบชะมัดเลยเหอๆ
- ผมไม่มีความรู้เรื่อง apache มากนะ เพราะฉะนั้นจะมีการตั้งค่าตรงไหนที่มีผลกับภาษาไทยใน .htaccess รึปล่าว ผมไม่ทราบ แต่เครื่อง localhost ผมผ่าน แล้วก็ยังไม่ได้ลองบน host จิง
- ผมใช้ editplus แก้ไฟล์ .htaccess เซฟเป็น utf-8 คนอื่นผมไม่ทราบนะว่าผลจะเป็นงัย
แต่อีกปัญหาน่าเบื่อเรื่อง encoding
ในบางเครื่องทำตามข้างบนก็อาจจะยังเน่า เพราะ pligg มันบันทึกลง database เน่าเอง
ถ้าบางคนมีปัญหากับ database ลอง ใส่ mysql_query("SET NAMES utf8;");
ในไฟล์ lib/db.php
แบบนี้มั้ง มั่วๆไป
<?php
function connect($dbuser='', $dbpassword='', $dbhost='localhost')
{
global $ezsql_mysql_str; $return_val = false;
// Must have a user and a password
if ( ! $dbuser )
{
$this->register_error($ezsql_mysql_str[1]);
//$this->show_errors ? trigger_error($ezsql_mysql_str[1],E_USER_WARNING) : null;
die($ezsql_mysql_str[1]);
}
// Try to establish the server database handle
else if ( ! $this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword,true) )
{
$this->register_error($ezsql_mysql_str[2].' in '.__FILE__.' on line '.__LINE__);
$this->show_errors ? trigger_error($ezsql_mysql_str[2],E_USER_WARNING) : null;
}
else
{
if($this->log_to_file){
$fh=fopen($this->logfile,"a");
fwrite($fh,"Connect - " . date("Y-m-d H:i:s", time()) . " - " . $_SERVER['REQUEST_URI'] ."\n");
fclose($fh);
}
$this->dbuser = $dbuser;
$this->dbpassword = $dbpassword;
$this->dbhost = $dbhost;
$return_val = true;
mysql_query("SET NAMES utf8;");
}
return $return_val;
}
?>
อ้อ ลืมบอกว่า ผมสร้าง db เป็น utf8 หมดนะ (ไม่รู้เกี่ยวป่าว โคตรมั่วๆๆๆๆๆ)
อีกเรื่องๆๆๆๆๆ ตอน submit url อ่ะ pligg มันจะไปดึงหน้าเว็บนั้นมาแล้วเอา title มากรอกให้เอง แล้วมันจะแปลง encoding ให้ด้วย ถ้าหน้านั้นไม่ใช้ UTF-8
แต่ ... บางเว็บใช้ 2 encoding ไม่ใกล้ไม่ไกล ไทยเสียวนี่เอง pligg มันเอาแค่อันแรก เลยกลายเป็นมันเอา UTF-8 ไปแปลงเป็น UTF-8 เหอๆ เอ๋อไปกันใหญ่ แต่ปัยหานี้ไม่น่าจะมีบ่อย ผ่านๆๆๆ