Pengarang: Trotter
Surel: [email protected]
Sumber: www.gbunix.com
Harap simpan dokumen secara lengkap dan sebutkan sumbernya saat mencetak ulang.
Kata Pengantar
Seiring dengan pertumbuhan konten di Internet pada tingkat yang mengkhawatirkan, pentingnya mesin pencari menjadi semakin menonjol. Jika sebuah situs web ingin diindeks dengan lebih baik oleh mesin pencari, selain ramah pengguna (User Friendly), maka desain website juga harus ramah mesin pencari. Desain (Search Engine Friendly) juga sangat penting. Semakin banyak konten halaman yang masuk ke mesin pencari, maka semakin besar peluang ditemukan oleh pengguna dengan menggunakan kata kunci yang berbeda-beda. Saya harus mengakui bahwa menulis ulang tautan web dinamis menjadi tautan statis adalah cara paling aman dan stabil untuk mengoptimalkan mesin pencari. Solusi ini diusulkan untuk pengalihan URL sistem forum phpBB.
Solusi
pengalihan URL secara teknis dapat diterapkan dengan dua cara, satu didasarkan pada penulisan ulang URL, dan yang lainnya didasarkan pada PATH_INFO. Misalnya, http://www.gbunix.com/bbs/ftopic102.html diimplementasikan berdasarkan penulisan ulang, dan http://www.gbunix.com/article/article.php/515 diimplementasikan berdasarkan PATH_INFO.
Untuk transformasi forum PHPBB, kami akan memperkenalkan kedua teknologi ini masing-masing.
1. Implementasi menggunakan teknologi rewrite:
Modifikasi kode phpBB:
Buka file /includes/page_header.php dan
cari kode:
//
//Buat status masuk/keluar
//
Tambahkan sebelumnya:
ob_start();
fungsi replace_for_mod_rewrite(&$s)
{
$urlin =
susunan(
"'(?<!/)viewforum.php?f=([0-9]*)&topicdays=([0-9]*)&start=([0-9]*)'",
"'(?<!/)viewforum.php?f=([0-9]*)&mark=topik'",
"'(?<!/)viewforum.php?f=([0-9]*)'",
"'(?<!/)viewtopic.php?t=([0-9]*)&view=sebelumnya'",
"'(?<!/)viewtopic.php?t=([0-9]*)&view=berikutnya'",
"'(?<!/)viewtopic.php?t=([0-9]*)&postdays=([0-9]*)&postorder=([a-zA-Z]*)& ;mulai=([0-9]*)'",
"'(?<!/)viewtopic.php?t=([0-9]*)&start=([0-9]*)&postdays=([0-9]*)&postorder =([a-zA-Z]*)&highlight=([a-zA-Z0-9]*)'",
"'(?<!/)viewtopic.php?t=([0-9]*)start=([0-9]*)'",
"'(?<!/)viewtopic.php?t=([0-9]*)'",
"'(?<!/)viewtopic.php&p=([0-9]*)'",
"'(?<!/)viewtopic.php?p=([0-9]*)'",
);
$urlout = susunan(
"lihatforum\1-\2-\3.html",
"forum\1.html",
"forum\1.html",
"topik\1.html",
"ntopik\1.html",
"ftopik\1-\2-\3-\4.html",
"ftopik\1.html",
"ftopik\1-\2.html",
"ftopik\1.html",
"sutra\1.html",
"sutra\1.html",
);
$s = preg_replace($urlin, $urlout, $s);
kembalikan $s;
}
Buka file /includes/page_tail.php dan
cari kode:
$db->sql_close();
lalu tambahkan:
$contents = ob_get_contents();
ob_end_clean();
echo replace_for_mod_rewrite($isi);
global $dbg_starttime;
Jika phpBB Anda versi 2.06, buka file include/functions.php dan
cari kode:
if (!empty($db))
{
$db->sql_close();
}
:
if (stristr($url, 'http://')) {
header('Lokasi: ' .$url);
KELUAR;
}
Terakhir buat file .htaccess di direktori bbs. Isi filenya adalah:
RewriteEngine On
Aturan Penulisan Ulang ^forums.* index.php
Aturan Penulisan Ulang ^forum([0-9]*).* viewforum.php?f=$1&mark=topic
Aturan Penulisan Ulang ^viewforum([0-9]*)-([0-9]*)-([0-9]*).* viewforum.php?f=$1&topicdays=$2&start=$3
Aturan Penulisan Ulang ^forum([0-9]*).* viewforum.php?f=$1
Aturan Penulisan Ulang ^ptopic([0-9]*).* viewtopic.php?t=$1&view=previous
Aturan Penulisan Ulang ^ntopic([0-9]*).* viewtopic.php?t=$1&view=next
Aturan Penulisan Ulang ^ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* viewtopic.php?t=$1&postdays =$2&postorder=$3&mulai=$4
Aturan Penulisan Ulang ^ftopic([0-9]*)-([0-9]*).* viewtopic.php?t=$1&start=$2
Aturan Penulisan Ulang ^ftopic([0-9]*).* viewtopic.php?t=$1
Aturan Penulisan Ulang ^ftopic([0-9]*).html viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5
RewriteRule ^sutra([0-9]*).* viewtopic.php?p=$1
Jika server Anda tidak mendukung .htaccess, silakan buka file httpd.conf dan edit bagian virtual host Anda sebagai berikut:
<VirtualHost 1.2.3.4 >
ServerAdmin [email protected]
DocumentRoot /home1/ftp/trotter/www
Nama Server www.gbunix.com
Tulis UlangEngineOn
Aturan Penulisan Ulang ^/bbs/forums.* /bbs/index.php
Aturan Penulisan Ulang ^/bbs/forum([0-9]*).* /bbs/viewforum.php?f=$1&mark=topic
Aturan Penulisan Ulang ^/bbs/viewforum([0-9]*)-([0-9]*)-([0-9]*).* /bbs/viewforum.php?f=$1&topicdays=$2&start=$3
Aturan Penulisan Ulang ^/bbs/forum([0-9]*).* /bbs/viewforum.php?f=$1
Aturan Penulisan Ulang ^/bbs/ptopic([0-9]*).* /bbs/viewtopic.php?t=$1&view=previous
Aturan Penulisan Ulang ^/bbs/ntopic([0-9]*).* /bbs/viewtopic.php?t=$1&view=next
Aturan Penulisan Ulang ^/bbs/ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* /bbs/viewtopic. php?t=$1&postdays=$2&postorder=$3&mulai=$4
Aturan Penulisan Ulang ^/bbs/ftopic([0-9]*)-([0-9]*).* /bbs/viewtopic.php?t=$1&start=$2
Aturan Penulisan Ulang ^/bbs/ftopic([0-9]*).* /bbs/viewtopic.php?t=$1
Aturan Penulisan Ulang ^/bbs/ftopic([0-9]*).html /bbs/viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5
Aturan Penulisan Ulang ^/bbs/sutra([0-9]*).* /bbs/viewtopic.php?p=$1
Log Log Kesalahan/gbunix.com-error_log
Log CustomLog/gbunix.com-access_log digabungkan
</VirtualHost>
Jika Anda tidak menggunakan virtual host, cukup letakkan bagian kode RewriteRule di akhir file httpd.conf.
Catatan: Sangat penting untuk keamanan sistem, silakan buat file robots.txt di direktori rilis bbs. Isi file adalah sebagai berikut:
Disallow: /your-forum-folder/sutra*.html$
Larang: /folder-forum-anda/ptopic*.html$
Larang: /folder-forum-Anda/ntopic*.html$
Larang: /folder-forum-Anda/ftopic*asc*.html$
Instal modul mod_rewrite untuk apache.
Jika server apache Anda belum diinstal, caranya sangat sederhana. Cukup kompilasi modul mod_rewrite ke dalamnya saat mengkompilasi dokumen terkait dapat ditemukan di Ditemukan di www.gbunix.com . Jika Apache Anda telah terinstal, dan sekarang Anda hanya ingin mengkompilasi modul mod_rewrite.so dan memuatnya ke Apache, kami akan memperkenalkan metode ini di bawah.
Ambil sistem operasi Solaris sebagai contoh:
# PATH=/usr/local/bin:/usr/sfw/bin:/usr/ccs/bin:$PATH
# ekspor JALUR
# gcc yang mana
# yang membuat
# find ./ -name mod_rewrite.c //Cari file mod_rewrite.c di direktori instalasi apache
# cd PATH/to/mod_rewrite.c //Masukkan direktori yang berisi file mod_rewrite.c
# apxs -c mod_foo.c //Silakan tentukan jalur absolut untuk apxs, di direktori bin tempat Anda menggunakan apache saat ini
# apxs -i -a -n mod_rewrite mod_rewrite.la
Jika tidak ada kesalahan, file mod_rewrite.so harus dikompilasi di direktori modul apache Anda.
Edit file httpd.conf dan konfirmasikan bahwa httpd.conf sudah berisi pernyataan pemuatan mod_rewrite.so, sebagai berikut:
LoadModule rewrite_module modul/mod_rewrite.so
Saat ini, apache Anda seharusnya sudah mendukung penulisan ulang.
2. Implementasi berdasarkan teknologi PATH_INFO:
Ubah kode phpBB:
Buka file keseluruhan_header.tpl dan tambahkan kode berikut pada baris pertama:
<base href=" http://www.your-forum.com/forum-dir/ ">
Buka file config.php, tambahkan kode berikut sebelum ?>:
if ($REQUEST_METHOD == "GET") {
jika (strlen(getenv('PATH_INFO')) > 1) {
$GET_array = array();
$PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);
$vars = meledak('/', substr(getenv('PATH_INFO'), 1));
untuk ($i=0, $n=ukuran($vars); $i<$n; $i++) {
if (strpos($vars[$i], '[]')) {
$GET_array[substr($vars[$i], 0, -2)][] = $vars[$i+1];
} kalau tidak {
$HTTP_GET_VARS[$vars[$i]] = $vars[$i+1];
}
$i++;
}
jika (ukuran($GET_array) > 0) {
while (daftar($kunci, $nilai) = masing-masing($GET_array)) {
$HTTP_GET_VARS[$kunci] = $nilai;
}
}
}
}
if ($REQUEST_METHOD == "POST") {
jika (strlen(getenv('PATH_INFO')) > 1) {
$POST_array = array();
$PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);
$vars = meledak('/', substr(getenv('PATH_INFO'), 1));
untuk ($i=0, $n=ukuran($vars); $i<$n; $i++) {
if (strpos($vars[$i], '[]')) {
$POST_array[substr($vars[$i], 0, -2)][] = $vars[$i+1];
} kalau tidak {
$HTTP_POST_VARS[$vars[$i]] = $vars[$i+1];
}
$i++;
}
jika (ukuran($GET_array) > 0) {
while (daftar($kunci, $nilai) = masing-masing($POST_array)) {
$HTTP_POST_VARS[$kunci] = $nilai;
}
}
}
}
Buka file function.php dan tambahkan kode berikut sebelum ?>:
function replace_for_mod_rewrite($s) {
$s = str_replace("?", "/", $s);
$s = str_replace("&", "/", $s);
$s = str_replace("&", "/", $s);
$s = str_replace("=", "/", $s);
return $s;
}
Buka file session.php dan ganti fungsi append_sid() yang didefinisikan sebelumnya dengan kode berikut:
function append_sid($url, $non_html_amp = false)
{
global $SID;
if ( !empty($SID) && !preg_match('#sid=#', $url) && !preg_match('#sid/#', $url) && !stristr( $_SERVER["HTTP_USER_AGENT"] ,'bot ') && !stristr($_SERVER["HTTP_USER_AGENT"] ,'inktomi'))
{
$url .= ( ( strpos($url, '?') != false ) ? ( ( $non_html_amp ) ? '&' : '&' ) : '?' ) $SID ;
}
$url=replace_for_mod_rewrite($url);
kembalikan $url;
}
Saat ini, URL forum Anda akan dipetakan ke ( http://www.domain/bbs/viewtopic.php/t/4 ).
Referensi: