المؤلف: تروتر
البريد الإلكتروني: [email protected]
المصدر: www.gbunix.com
برجاء الاحتفاظ بالوثيقة كاملة والإشارة إلى المصدر عند إعادة الطباعة.
مقدمة
مع نمو المحتوى على الإنترنت بمعدل ينذر بالخطر، أصبحت أهمية محركات البحث أكثر وضوحًا إذا أراد موقع الويب أن يتم فهرسته بشكل أفضل بواسطة محركات البحث، بالإضافة إلى كونه سهل الاستخدام (سهل الاستخدام)، فإن يجب أيضًا أن يكون تصميم موقع الويب صديقًا لمحركات البحث. كما أن تصميم (Search Engine Friendly) مهم جدًا أيضًا. كلما زاد محتوى الصفحة الذي يدخل محرك البحث، زادت فرصة العثور عليه من قبل المستخدمين باستخدام كلمات رئيسية مختلفة. يجب أن أعترف أن إعادة كتابة روابط الويب الديناميكية إلى روابط ثابتة هي الطريقة الأكثر أمانًا واستقرارًا لتحسين محركات البحث. هذا الحل مقترح لإعادة توجيه عنوان URL لنظام منتدى phpBB.
يمكن تنفيذ إعادة توجيه عنوان URLللحل
تقنيًا بطريقتين، إحداهما تعتمد على إعادة كتابة عنوان URL، والأخرى تعتمد على PATH_INFO. على سبيل المثال، يتم تنفيذ http://www.gbunix.com/bbs/ftopic102.html استنادًا إلى إعادة الكتابة، ويتم تنفيذ http://www.gbunix.com/article/article.php/515 استنادًا إلى PATH_INFO.
من أجل تحويل منتدى PHPBB، سنقدم هاتين التقنيتين على التوالي.
1. التنفيذ باستخدام تقنية إعادة الكتابة:
تعديل كود phpBB:
افتح الملف /includes/page_header.php
وابحث عن الكود:
//
// إنشاء حالة تسجيل الدخول/تسجيل الخروج
//
أضف قبل:
ob_start();
وظيفة استبدال_for_mod_rewrite(&$s)
{
$ رابط =
صفيف (
"'(?<!/)viewforum.php?f=([0-9]*)&topicdays=([0-9]*)&start=([0-9]*)'",
"'(?<!/)viewforum.php?f=([0-9]*)&mark=topics'",
"'(?<!/)viewforum.php?f=([0-9]*)'",
"'(?<!/)viewtopic.php?t=([0-9]*)&view=previous'",
"'(?<!/)viewtopic.php?t=([0-9]*)&view=next'",
"'(?<!/)viewtopic.php?t=([0-9]*)&postdays=([0-9]*)&postorder=([a-zA-Z]*)& ;بدء=([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 = صفيف(
"viewforum\1-\2-\3.html"،
"المنتدى\1.html"،
"المنتدى\1.html"،
"ptopic\1.html"،
"ntopic\1.html"،
"ftopic\1-\2-\3-\4.html"،
"ftopic\1.html"،
"ftopic\1-\2.html"،
"ftopic\1.html"،
"سوترا\1.html"،
"سوترا\1.html"،
);
$s = preg_replace($urlin, $urlout, $s);
إرجاع $s؛
}
افتح الملف /includes/page_tail.php
وابحث عن الكود:
$db->sql_clus();
ثم أضف:
$contents = ob_get_contents();
ob_end_clean();
صدى استبدال_for_mod_rewrite($contents);
global $dbg_starttime;
إذا كان إصدار phpBB لديك هو 2.06، فافتح الملف include/functions.php وابحث
عن الكود:
if (!empty($db))
{
$db->sql_ Close();
}
:
if (stristr($url, 'http://')) {
header('الموقع:' .$url);
مخرج؛
}
وأخيرًا، قم بإنشاء ملف .htaccess في دليل bbs. محتوى الملف هو:
RewriteEngine On
RewriteRule ^forums.*index.php
قاعدة إعادة الكتابة ^forum([0-9]*).* viewforum.php?f=$1&mark=topic
قاعدة إعادة الكتابة ^viewforum([0-9]*)-([0-9]*)-([0-9]*).* viewforum.php?f=$1&topicdays=$2&start=$3
قاعدة إعادة الكتابة ^forum([0-9]*).* viewforum.php?f=$1
قاعدة إعادة الكتابة ^ptopic([0-9]*).* viewtopic.php?t=$1&view=previous
قاعدة إعادة الكتابة ^ntopic([0-9]*).* viewtopic.php?t=$1&view=next
RewriteRule ^ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* viewtopic.php?t=$1&postdays =$2&طلب لاحق=3$&بدء=4$
RewriteRule ^ftopic([0-9]*)-([0-9]*).* viewtopic.php?t=$1&start=$2
قاعدة إعادة الكتابة ^ftopic([0-9]*).* viewtopic.php?t=$1
RewriteRule ^ftopic([0-9]*).html viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5
RewriteRule ^sutra([0-9]*).* viewtopic.php?p=$1
إذا كان خادمك لا يدعم .htaccess، يرجى فتح ملف httpd.conf وتحرير جزء المضيف الافتراضي الخاص بك كما يلي:
<VirtualHost 1.2.3.4 >
مسؤول الخادم [email protected]
DocumentRoot /home1/ftp/trotter/www
اسم الخادم www.gbunix.com
RewriteEngineOn
قاعدة إعادة الكتابة ^/bbs/forums.* /bbs/index.php
قاعدة إعادة الكتابة ^/bbs/forum([0-9]*).* /bbs/viewforum.php?f=$1&mark=topic
قاعدة إعادة الكتابة ^/bbs/viewforum([0-9]*)-([0-9]*)-([0-9]*).* /bbs/viewforum.php?f=$1&topicdays=$2&start=$3
قاعدة إعادة الكتابة ^/bbs/forum([0-9]*).* /bbs/viewforum.php?f=$1
قاعدة إعادة الكتابة ^/bbs/ptopic([0-9]*).* /bbs/viewtopic.php?t=$1&view=previous
قاعدة إعادة الكتابة ^/bbs/ntopic([0-9]*).* /bbs/viewtopic.php?t=$1&view=next
RewriteRule ^/bbs/ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* /bbs/viewtopic. php?t=$1&postdays=$2&postorder=$3&start=$4
RewriteRule ^/bbs/ftopic([0-9]*)-([0-9]*).* /bbs/viewtopic.php?t=$1&start=$2
قاعدة إعادة الكتابة ^/bbs/ftopic([0-9]*).* /bbs/viewtopic.php?t=$1
RewriteRule ^/bbs/ftopic([0-9]*).html /bbs/viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5
قاعدة إعادة الكتابة ^/bbs/sutra([0-9]*).* /bbs/viewtopic.php?p=$1
ErrorLog logs/gbunix.com-error_log
تم دمج CustomLog logs/gbunix.com-access_log
</VirtualHost>
إذا كنت لا تستخدم مضيفًا افتراضيًا، فما عليك سوى وضع جزء RewriteRule من الكود في نهاية ملف httpd.conf.
ملاحظة: من المهم جدًا، من أجل أمان النظام، إنشاء ملف robots.txt في دليل إصدار bbs. محتوى الملف كما يلي:
Disallow: /your-forum-folder/sutra*.html$
عدم السماح: /your-forum-folder/ptopic*.html$
عدم السماح: /your-forum-folder/ntopic*.html$
Disallow: /your-forum-folder/ftopic*asc*.html$
قم بتثبيت وحدة mod_rewrite لـ apache.
إذا لم يتم تثبيت خادم apache، فالأمر بسيط للغاية. ما عليك سوى تجميع وحدة mod_rewrite فيها عند تجميع مستندات apache يمكن العثور عليها على موقع www.gbunix.com . إذا تم تثبيت Apache الخاص بك، وتريد الآن تجميع الوحدة mod_rewrite.so وتحميلها في Apache، فسنقدم هذه الطريقة أدناه.
خذ نظام التشغيل Solaris كمثال:
# PATH=/usr/local/bin:/usr/sfw/bin:/usr/ccs/bin:$PATH
# مسار التصدير
# أي دول مجلس التعاون الخليجي
# الذي يجعل
# find ./ -name mod_rewrite.c // ابحث عن ملف mod_rewrite.c في دليل تثبيت Apache
# cd PATH/to/mod_rewrite.c // أدخل الدليل الذي يحتوي على ملف mod_rewrite.c
# apxs -c mod_foo.c // يرجى تحديد المسار المطلق لـ apxs، في دليل bin حيث تستخدم Apache حاليًا
# apxs -i -a -n mod_rewrite mod_rewrite.la
إذا لم تكن هناك أخطاء، فيجب تجميع ملف mod_rewrite.so في دليل الوحدات الخاص بـ Apache الخاص بك.
قم بتحرير ملف httpd.conf وتأكد من أن httpd.conf يحتوي بالفعل على بيان تحميل mod_rewrite.so، كما يلي:
LoadModule rewrite_module Modules/mod_rewrite.so
في هذا الوقت، يجب أن يدعم Apache بالفعل إعادة الكتابة.
2. التنفيذ يعتمد على تقنية PATH_INFO:
قم بتعديل كود phpBB:
افتح الملف overheader.tpl وأضف الكود التالي إلى السطر الأول:
<base href=" http://www.your-forum.com/forum-dir/ ">
افتح ملف config.php، وأضف الكود التالي قبل ?>:
if ($REQUEST_METHOD == "GET") {
إذا (strlen(getenv('PATH_INFO')) > 1) {
$GET_array = array();
$PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);
$vars = Explosion('/', substr(getenv('PATH_INFO'), 1));
for ($i=0, $n=sizeof($vars); $i<$n; $i++) {
إذا (strpos($vars[$i], '[]')) {
$GET_array[substr($vars[$i], 0, -2)][] = $vars[$i+1];
} آخر {
$HTTP_GET_VARS[$vars[$i]] = $vars[$i+1];
}
$i++;
}
إذا (حجم($GET_array) > 0) {
بينما (قائمة(مفتاح $، قيمة $) = كل($GET_array)) {
$HTTP_GET_VARS[$key] = $value;
}
}
}
}
إذا ($REQUEST_METHOD == "POST") {
إذا (strlen(getenv('PATH_INFO')) > 1) {
$POST_array = array();
$PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);
$vars = Explosion('/', substr(getenv('PATH_INFO'), 1));
for ($i=0, $n=sizeof($vars); $i<$n; $i++) {
إذا (strpos($vars[$i], '[]')) {
$POST_array[substr($vars[$i], 0, -2)][] = $vars[$i+1];
} آخر {
$HTTP_POST_VARS[$vars[$i]] = $vars[$i+1];
}
$i++;
}
إذا (حجم($GET_array) > 0) {
بينما (list($key, $value) = every($POST_array)) {
$HTTP_POST_VARS[$key] = $value;
}
}
}
}
افتح ملف jobs.php وأضف الكود التالي قبل ?>:
function Replace_for_mod_rewrite($s) {
$s = str_replace("؟", "/", $s);
$s = str_replace("&", "/", $s);
$s = str_replace("&"، "/"، $s)؛
$s = str_replace("=", "/", $s);
return $s
}
افتح ملف session.php واستبدل وظيفة append_sid() المحددة بالكود التالي:
function append_sid($url, $non_html_amp = false)
{
معرف $SID العالمي؛
إذا ( !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 ) ? '&' : '&' ) : '?' ) ;
}
$url=replace_for_mod_rewrite($url);
إرجاع $url;
}
في هذا الوقت، سيتم تعيين عنوان URL للمنتدى الخاص بك إلى ( http://www.domain/bbs/viewtopic.php/t/4 ).
المراجع: