Autor: Trotón
Correo electrónico: [email protected]
Fuente: www.gbunix.com
Mantenga el documento completo e indique la fuente al reimprimirlo.
Prefacio
A medida que el contenido en Internet crece a un ritmo alarmante, la importancia de los motores de búsqueda se ha vuelto cada vez más destacada. Si un sitio web quiere ser mejor indexado por los motores de búsqueda, además de ser fácil de usar (User Friendly), el. El diseño del sitio web también debe ser compatible con los motores de búsqueda. El diseño (compatible con los motores de búsqueda) también es muy importante. Cuanto más contenido de la página ingrese al motor de búsqueda, mayores serán las posibilidades de ser encontrada por los usuarios usando diferentes palabras clave. Debo admitir que reescribir enlaces web dinámicos en enlaces estáticos es la forma más segura y estable de optimizar los motores de búsqueda. Esta solución se propone para la redirección de URL del sistema de foros phpBB.
La redirección de URLde la solución
se puede implementar técnicamente de dos maneras: una se basa en la reescritura de URL y la otra en PATH_INFO. Por ejemplo, http://www.gbunix.com/bbs/ftopic102.html se implementa según la reescritura y http://www.gbunix.com/article/article.php/515 se implementa según PATH_INFO.
Para la transformación del foro PHPBB, presentaremos estas dos tecnologías respectivamente.
1. Implementación utilizando tecnología de reescritura:
Modifique el código phpBB:
abra el archivo /includes/page_header.php y
busque el código:
//
//Generar estado de inicio de sesión/desconexión
//
Agregar antes:
ob_start();
función reemplazar_for_mod_rewrite(&$s)
{
$urlín =
formación(
"'(?<!/)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=anterior'",
"'(?<!/)viewtopic.php?t=([0-9]*)&view=siguiente'",
"'(?<!/)viewtopic.php?t=([0-9]*)&postdays=([0-9]*)&postorder=([a-zA-Z]*)& ;inicio=([0-9]*)'",
"'(?<!/)viewtopic.php?t=([0-9]*)&start=([0-9]*)&postdays=([0-9]*)&postorder =([a-zA-Z]*)&resaltar=([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]*)'",
);
$salidaurl = matriz(
"viewforum\1-\2-\3.html",
"foro\1.html",
"foro\1.html",
"tópico\1.html",
"ntopic\1.html",
"ftopic\1-\2-\3-\4.html",
"ftopic\1.html",
"ftopic\1-\2.html",
"ftopic\1.html",
"sutra\1.html",
"sutra\1.html",
);
$s = preg_replace($urlin, $urlout, $s);
devolver $s;
}
Abra el archivo /includes/page_tail.php y
busque el código:
$db->sql_close()
y luego agregue:
$contents = ob_get_contents();
ob_end_clean();
echo replace_for_mod_rewrite($contenido);
global $dbg_starttime;
si su phpBB es la versión 2.06, abra el archivo include/functions.php y
busque el código:
if (!empty($db))
{
$db->sql_close();
}
:
if (stristr($url, 'http://')) {
encabezado('Ubicación: ' . $url);
salida;
}
Finalmente cree el archivo .htaccess en el directorio bbs. El contenido del archivo es:
RewriteEngine On.
RewriteRule ^foros.* index.php
RewriteRule ^forum([0-9]*).* viewforum.php?f=$1&mark=topic
RewriteRule ^viewforum([0-9]*)-([0-9]*)-([0-9]*).* viewforum.php?f=$1&topicdays=$2&start=$3
RewriteRule ^forum([0-9]*).* viewforum.php?f=$1
RewriteRule ^ptopic([0-9]*).* viewtopic.php?t=$1&view=anterior
RewriteRule ^ntopic([0-9]*).* viewtopic.php?t=$1&view=siguiente
RewriteRule ^ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* viewtopic.php?t=$1&postdays =$2&postorden=$3&inicio=$4
RewriteRule ^ftopic([0-9]*)-([0-9]*).* viewtopic.php?t=$1&start=$2
RewriteRule ^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
Si su servidor no admite .htaccess, abra el archivo httpd.conf y edite la parte de su host virtual de la siguiente manera:
<VirtualHost 1.2.3.4 >
ServerAdmin [email protected]
DocumentRoot /home1/ftp/trotter/www
Nombre del servidor www.gbunix.com
Reescribir motor activado
Reescribir regla ^/bbs/forums.* /bbs/index.php
RewriteRule ^/bbs/forum([0-9]*).* /bbs/viewforum.php?f=$1&mark=topic
RewriteRule ^/bbs/viewforum([0-9]*)-([0-9]*)-([0-9]*).* /bbs/viewforum.php?f=$1&topicdays=$2&start=$3
RewriteRule ^/bbs/forum([0-9]*).* /bbs/viewforum.php?f=$1
RewriteRule ^/bbs/ptopic([0-9]*).* /bbs/viewtopic.php?t=$1&view=previous
RewriteRule ^/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
RewriteRule ^/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
RewriteRule ^/bbs/sutra([0-9]*).* /bbs/viewtopic.php?p=$1
Registros de ErrorLog/gbunix.com-error_log
Registros CustomLog/gbunix.com-access_log combinados
</VirtualHost>
Si no está utilizando un host virtual, simplemente coloque la parte RewriteRule del código al final del archivo httpd.conf.
Nota: Es muy importante que, para la seguridad del sistema, cree el archivo robots.txt en el directorio de lanzamiento de bbs. El contenido del archivo es el siguiente:
Disallow: /your-forum-folder/sutra*.html$.
No permitir: /carpeta-de-su-foro/ptopic*.html$
No permitir: /carpeta-de-su-foro/ntopic*.html$
Disallow: /your-forum-folder/ftopic*asc*.html$
Instale el módulo mod_rewrite para apache.
Si su servidor apache no está instalado, es muy simple: simplemente compile el módulo mod_rewrite en él al compilar apache. se puede encontrar en Encontrado en www.gbunix.com . Si su Apache ya está instalado y ahora solo desea compilar el módulo mod_rewrite.so y cargarlo en Apache, presentaremos este método a continuación.
Tome el sistema operativo Solaris como ejemplo:
# PATH=/usr/local/bin:/usr/sfw/bin:/usr/ccs/bin:$PATH
# exportar RUTA
# cual gcc
# que hacen
# encontrar ./ -name mod_rewrite.c //Busca el archivo mod_rewrite.c en el directorio de instalación de Apache
# cd PATH/to/mod_rewrite.c //Ingrese el directorio que contiene el archivo mod_rewrite.c
# apxs -c mod_foo.c //Especifique la ruta absoluta para apxs, en el directorio bin donde actualmente está usando Apache
# apxs -i -a -n mod_rewrite mod_rewrite.la
Si no hay errores, se debe compilar un archivo mod_rewrite.so en el directorio de módulos de su Apache.
Edite el archivo httpd.conf y confirme que httpd.conf ya contiene la declaración de carga de mod_rewrite.so, de la siguiente manera:
LoadModule rewrite_module module/mod_rewrite.so
En este momento, su Apache ya debería admitir la reescritura.
2. Implementación basada en la tecnología PATH_INFO:
Modifique el código phpBB:
abra el archivo global_header.tpl y agregue el siguiente código en la primera línea:
<base href=" http://www.your-forum.com/forum-dir/ ">
Abra el archivo config. php, agregue el siguiente código antes de ?>:
if ($REQUEST_METHOD == "GET") {
si (strlen(getenv('PATH_INFO')) > 1) {
$GET_array = matriz();
$PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);
$vars = explotar('/', substr(getenv('PATH_INFO'), 1));
para ($i=0, $n=tamañode($vars); $i<$n; $i++) {
si (strpos($vars[$i], '[]')) {
$GET_array[substr($vars[$i], 0, -2)][] = $vars[$i+1];
} demás {
$HTTP_GET_VARS[$vars[$i]] = $vars[$i+1];
}
$yo++;
}
si (tamaño de ($GET_array) > 0) {
mientras (lista($clave, $valor) = cada uno($GET_array)) {
$HTTP_GET_VARS[$clave] = $valor;
}
}
}
}
si ($REQUEST_METHOD == "POST") {
si (strlen(getenv('PATH_INFO')) > 1) {
$POST_array = matriz();
$PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);
$vars = explotar('/', substr(getenv('PATH_INFO'), 1));
para ($i=0, $n=tamañode($vars); $i<$n; $i++) {
si (strpos($vars[$i], '[]')) {
$POST_array[substr($vars[$i], 0, -2)][] = $vars[$i+1];
} demás {
$HTTP_POST_VARS[$vars[$i]] = $vars[$i+1];
}
$yo++;
}
si (tamaño de ($GET_array) > 0) {
mientras (lista($clave, $valor) = cada uno($POST_array)) {
$HTTP_POST_VARS[$clave] = $valor;
}
}
}
}
Abra el archivo funciones.php y agregue el siguiente código antes de ?>:
function replace_for_mod_rewrite($s) {
$s = str_replace("?", "/", $s);
$s = str_replace("&", "/", $s);
$s = str_replace("&", "/", $s);
$s = str_replace("=", "/", $s);
return $s;
}
Abra el archivo session.php y reemplace la función append_sid() definida originalmente con el siguiente código:
function append_sid($url, $non_html_amp = false)
{
$SID globales;
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 ) ? '&' : '&' ) : '?' ) ;
}
$url=replace_for_mod_rewrite($url);
devolver $url;
}
En este momento, la URL de su foro se asignará a ( http://www.domain/bbs/viewtopic.php/t/4 ).
Referencias: