| |
|
| :: |
| Author |
Message |
vitok
Joined: 25 Jan 2007 Posts: 10
|
Posted: Thu Jan 25, 2007 8:49 pm Post subject: CH & win1251 & Simple mod rewrite |
|
|
Hallo!
I've been thinking of applying the mod to the site http://osvic.ru and do have some questions:
1) the site is in Russian, charset win1251. Shall i get any advantage from using Mixed/Advanced mod rewrite or Simple mod rewrite is the only possible choice?
2) i'm using CH 2.12. Shall i have any problems with installing mod rewrite over CH? Dcz wrote | Quote: | | I'll need first to work on a CH 2.16 solution (2.14 already has support for simple mod rewrite) and this can take some time since CH is almost a phpBB fork | so probably i shall not?
3) google has indexed almost all pages of the site, even with those phpBB vanilla URLs session id's. Maybe mod rewrite is not that actual in the case?
Thanxs!  |
|
|
| Back to top |
|
 |
|
 |
dcz Administrateur - Site Admin

Joined: 28 Apr 2006 Posts: 13607
|
Posted: Fri Jan 26, 2007 2:52 pm Post subject: Re: CH & win1251 & Simple mod rewrite |
|
|
And welcome
So we'll have to deal with to types of problematic here.
First CH.
So far, I don't think that more that the simple mod rewrite will work on it, and it's not even sure you won't have to change some parts of it, this is to be checked.
Then for title injection and non Latin char-set, it is possible to tweak the format_url function a bit so that it will only inject the Latin chars in the URL.
This would allow this kind of title injection :
| Quote: | | Latin_Word Cyrillic_Word = >latin-word |
This is only an useful thing to do if you plan to often use Latin char-set words, like it could be the case if you forum was talking a bout ccs design for example.
It's a good thing for projects that will deal with technical words, things like that.
If not, the simple mod rewrite is the one to use, no need to inject anything in url we cannot
++ |
_________________ Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________
Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche |
|
| Back to top |
|
 |
vitok
Joined: 25 Jan 2007 Posts: 10
|
Posted: Fri Jan 26, 2007 3:18 pm Post subject: Re: CH & win1251 & Simple mod rewrite |
|
|
| dcz wrote: | | This is only an useful thing to do if you plan to often use Latin char-set words |
No, i do not plan this...
Some sites (e.g. ru.wikipedia.org) use cyrillic letters in their url's. Still i don't think that's smth i want. Or, better to say, i do not think this is smth that robots will be happy to see on the site Or maybe i'm mistaken?
Thanks a lot for your answer. I really can't understand how you manage to answer that many questions that fast... I'll try simple mod rewrite very soon...  |
|
|
| Back to top |
|
 |
vitok
Joined: 25 Jan 2007 Posts: 10
|
Posted: Wed Jan 31, 2007 4:58 pm Post subject: Re: CH & win1251 & Simple mod rewrite |
|
|
Ok, i've tried the mod and it looks great! Still i had to make some changes in the code. Futher i briefly describe what i've done. It would be great if you find several minutes to look the changes through and to comment them in case i've spoiled smth
1) i have CH installed => had to change includes/class_config.php the way you've described in phpBB-SEO-Simple-mod-Rewrite_V_0.0.2_CH_Edition . The replacement caused some problems with attach_mod and cache, so i used | Code: | | if (!defined('IN_ADMIN') && !defined('IN_LOGIN') && !( strstr($basename, 'includes/') || strstr($basename, 'attach_mod/') || strstr($basename, 'cache/') || strstr($basename, 'language/')) ) | instead of | Code: | | if (!defined('IN_ADMIN') && !defined('IN_LOGIN') && !( strstr($basename, 'includes/') || strstr($basename, 'language/')) ) |
2) i changed .htaccess as you describe in the same file
3) as far as i cannot insert cyrillic chars in the urls and i have only two main categories and few forums, i've decided to translate forum names manually and to use urls e.g. | Code: | | http://localhost/school-abitu/moscow-state-university/article7029.html | instead of | Code: | | http://localhost/article7029.html | for my topics where school-abitu is one of my categories and moscow-state-university is one of my forums. Thus i added .* in rewrite_rules concerning topics & posts.
4) 3) caused problems with images and urls (because of two additional slashes), so i had to add strings | Code: | RewriteRule ^.*templates/(.*)$ templates/$1 [QSA,L]
RewriteRule ^.*images/(.*)$ images/$1 [QSA,L] | in htaccess file and to write | Code: | | return 'http://localhost/' . $url; | instead of in append_sid function (sessions.php)
5) i defined array rubr in your class phpbb_seo | Code: | $this->rubr2 = 'school-abitu/';
$this->rubr=array(
...
56 => $this->rubr2.'moscow-state-university',
...
); |
6) instead of | Code: | 'U_VIEW_TOPIC' => $config->url($this->requester_topics, $this->extra_parms + array(POST_TOPIC_URL => ((!empty($row['topic_moved_id']) && empty($this->extra_parms)) ? $row['topic_moved_id'] : $row['topic_id'])), true),
| in class_topics.php i used | Code: | 'U_VIEW_TOPIC' => $config->url($this->requester_topics, $this->extra_parms + array(POST_TOPIC_URL => ((!empty($row['topic_moved_id']) && empty($this->extra_parms)) ? $row['topic_moved_id'] : $row['topic_id'])) + array(POST_FORUM_URL => $row['forum_id']), true),
| to make it possible to learn the forum id from topics url
7) finally i replaced | Code: | $this->url = $this->seo_static['topic'] . $this->get_vars[POST_TOPIC_URL] . $this->start . $this->seo_ext['topic'];
| with | Code: | $this->url = $this->rubr[$this->get_vars[POST_FORUM_URL]] . '/' . $this->seo_static['topic'] . $this->get_vars[POST_TOPIC_URL] . $this->start . $this->seo_ext['topic'];
| in your viewtopic() function and added the line | Code: | | unset($this->get_vars[POST_FORUM_URL]); |
That's all
I still have some problems with navigation and ppages but i guess i can solve them myself)
Thanks a lot for your great work and for your help, dcz  |
|
|
| Back to top |
|
 |
dcz Administrateur - Site Admin

Joined: 28 Apr 2006 Posts: 13607
|
Posted: Wed Jan 31, 2007 6:26 pm Post subject: Re: CH & win1251 & Simple mod rewrite |
|
|
Great
So you used a static array to always know the forum titles, brilliant.
Have you seen the way I modded the download mod ?
It was actually very handy with the OO approach, and because the Download mod is always grabbing all category titles.
While working on phpBB3, I was actually thinking about implementing a cache for forum titles, kind of the way you did, but with auto updating features.
I don't know how it will end up, but the idea would be great to add folder injection to phpBB.
How did you deal with absolute linking ? base href of subsilver.cfg ?
I am interested into providing solutions for Category hierarchy, but miss time at the moment, so if you like we can collaborate a bit on this.
You could PM me your phpbb_seo_class.php, and I'll drop notes in the code and give you hints (especially for the p param etc), what do you think ?
You could end up releasing a pretty nice mod here
++ |
_________________ Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________
Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche |
|
| Back to top |
|
 |
vitok
Joined: 25 Jan 2007 Posts: 10
|
Posted: Fri Feb 02, 2007 3:14 pm Post subject: Re: CH & win1251 & Simple mod rewrite |
|
|
| dcz wrote: | | While working on phpBB3, I was actually thinking about implementing a cache for forum titles, kind of the way you did, but with auto updating features. |
Sounds great
| dcz wrote: | | How did you deal with absolute linking ? base href of subsilver.cfg ? |
My append_sid function returns (PHPBB_URL . $url) instead of ($url). And that's it, I quess...
| dcz wrote: | | I am interested into providing solutions for Category hierarchy, but miss time at the moment, so if you like we can collaborate a bit on this. |
It might be nice...
| dcz wrote: | | You could PM me your phpbb_seo_class.php, and I'll drop notes in the code and give you hints (especially for the p param etc), what do you think ? |
That's what I'll do right now
It seems to me that i've solved my problems with navi and ppages. But I'll appreciate any comments and suggestions!
As for me I like it when it's possible to just delete the end of url in the browser and to see the directory I'm in. That is to get from | Code: | | http://www.phpbb-seo.com/boards/posting.php | to | Code: | | http://www.phpbb-seo.com/boards/ |
So I made it this way in the phpbb_seo class and in htaccess. If it's possible look through htaccess please cause I'm not sure that I use "!" in the rules correctly (though it works fine).
It seems that I need to make robots.txt... And to insert pagination into urls as you write it somewhere here. And to apply metatags mod. And not to forget about google map... Huh, the evening's going to be quite interesting  |
|
|
| Back to top |
|
 |
dcz Administrateur - Site Admin

Joined: 28 Apr 2006 Posts: 13607
|
|
| Back to top |
|
 |
vitok
Joined: 25 Jan 2007 Posts: 10
|
Posted: Fri Feb 02, 2007 3:43 pm Post subject: Re: CH & win1251 & Simple mod rewrite |
|
|
| dcz wrote: | | About the the end of url in the browser, you can only get rid of it for the index.php, the example you posted would not allow other url to work in the same folder, like search.php etc ... |
Maybe my example wasn't good enough. I meant this:
| Code: | | http://localhost/school-abitu/edinyi-gos-exam-ege-nn59/article7087.html |
(it's a topic) vs
| Code: | | http://localhost/school-abitu/edinyi-gos-exam-ege-nn59/ | (it's a forum)
search.php works fine  |
|
|
| Back to top |
|
 |
dcz Administrateur - Site Admin

Joined: 28 Apr 2006 Posts: 13607
|
|
| Back to top |
|
 |
vitok
Joined: 25 Jan 2007 Posts: 10
|
Posted: Fri Feb 02, 2007 8:42 pm Post subject: Re: CH & win1251 & Simple mod rewrite |
|
|
Dcz, thanks a lot for your PMs!
| Code: | | $current_template_images = PHPBB_URL . $current_template_path . "/images"; |
I just didn't know where to look for this
So it's really nice that you pointed out how to deal with absolute urls without editing htaccess
I will truly have to change urls here and there but that's not a problem. |
|
|
| Back to top |
|
 |
dcz Administrateur - Site Admin

Joined: 28 Apr 2006 Posts: 13607
|
|
| Back to top |
|
 |
vitok
Joined: 25 Jan 2007 Posts: 10
|
Posted: Sun Feb 04, 2007 12:13 am Post subject: Re: CH & win1251 & Simple mod rewrite |
|
|
Dcz, to deal with absolute linking of images and files I had to make some more changes. Here they are:
In class_user.php
| Code: | function img($key)
{
global $images, $config;
return !empty($key) && isset($images[$key]) ? $config->root . $images[$key] : (eregi('^(ht|f)tp:', $key) ? $key : (@file_exists(@phpbb_realpath($config->root . $key)) ? $config->root . $key : './' .$key));
} |
==> | Code: | function img($key)
{
global $images, $config;
return !empty($key) && isset($images[$key]) ? $images[$key] : (eregi('^(ht|f)tp:', $key) ? $key : (@file_exists(@phpbb_realpath($config->root . $key)) ? $config->root . $key : './' .$key));
} |
In phpbb_seo_class.php i added
| Code: | $board_config['smilies_path'] = PHPBB_URL .$board_config['smilies_path'];
$board_config['avatar_gallery_path'] = PHPBB_URL .$board_config['avatar_gallery_path']; |
Also edited templates a little. In particular used | Code: | | {PHPBB_URL}/{postrow.attach.cat_thumb_images.IMG_THUMB_SRC} | instead of | Code: | | {postrow.attach.cat_thumb_images.IMG_THUMB_SRC} | in viewtopic_attach_body.tpl.
In class_topics.php
| Code: | | $pagination = new pagination($this->requester_topics, array(POST_TOPIC_URL => $row['topic_id']) + $this->extra_parms, 'start'); |
==>
| Code: | | $pagination = new pagination($this->requester_topics, array(POST_TOPIC_URL => $row['topic_id']) + array(POST_FORUM_URL => $row['forum_id']) + $this->extra_parms, 'start'); |
In viewtopic.php
| Code: | | $pagination = new pagination('viewtopic', array(POST_TOPIC_URL => $topic_id, 'postdays' => $post_days, 'postorder' => $post_order, 'highlight' => $highlight)); |
==> | Code: | | $pagination = new pagination('viewtopic', array(POST_TOPIC_URL => $topic_id, POST_FORUM_URL => $forum_id, 'postdays' => $post_days, 'postorder' => $post_order, 'highlight' => $highlight)); |
(last two make pagination display correctly and are not about linking )
Now I can use htaccess you've sent me!) |
|
|
| Back to top |
|
 |
vitok
Joined: 25 Jan 2007 Posts: 10
|
Posted: Sun Feb 04, 2007 12:22 am Post subject: Re: CH & win1251 & Simple mod rewrite |
|
|
Now about Zero duplicate... I do certainly need the mod
So I used | Code: | // www.phpBB-SEO.com SEO TOOLKIT BEGIN
$start_seo = _read('start', TYPE_INT);
$ppage_seo = _read('ppage', TYPE_INT);
if ($start_seo) $start_seo = '-' . $start_seo; else $start_seo = '';
if ($ppage_seo) $ppage_seo = '-' . $ppage_seo; else $ppage_seo = '';
$forum_id_seo = ($forum_id) ? ($phpbb_seo->seo_delim['forum'] . $forum_id) : '';
$uri = $phpbb_seo->seo_req_uri();
$phpbb_seo->seo_start( $start_seo, $board_config['topics_per_page'] );
$phpbb_seo->page_url = $phpbb_seo->seo_url['forum'][$forum_id] . $forum_id_seo . $ppage_seo . $start_seo . $phpbb_seo->seo_ext['forum'];
$phpbb_seo->seo_cond(!$userdata['session_logged_in'] && (strpos($uri, "sid=" ) !== FALSE ));
$topicday_redir = empty($_POST['topicdays']) && empty($_GET['topicdays']);
if ($_GET['topicdays'] == 0 || $_POST['topicdays'] == 0 ) {
$topicday_redir = TRUE;
}
if ( $phpbb_seo->do_redir || ( ($mark_read == '') && $topicday_redir && ( strpos($uri, $phpbb_seo->page_url) === FALSE ) ) ) {
$phpbb_seo->seo_redirect( PHPBB_URL . $phpbb_seo->page_url );
}
// www.phpBB-SEO.com SEO TOOLKIT END |
in index.php and
| Code: | // www.phpBB-SEO.com SEO TOOLKIT BEGIN
$start_seo = _read('start', TYPE_INT);
if ($start_seo) $start_seo = '-' . $start_seo; else $start_seo = '';
$forum_id_seo = ($forum_id) ? ($phpbb_seo->seo_delim['forum'] . $forum_id) : '';
$uri = $phpbb_seo->seo_req_uri();
$postorder_redir = empty($_POST['postorder']) && empty($_GET['postorder']);
if ($_GET['postorder'] == 'asc' || $_POST['postorder'] == 'asc' ) {
$postorder_redir = TRUE;
}
$phpbb_seo->seo_start( $start_seo, $board_config['posts_per_page'] );
$phpbb_seo->page_url = $phpbb_seo->seo_url['forum'][$forum_id] . $forum_id_seo . $phpbb_seo->seo_ext['forum'] . $phpbb_seo->seo_static['topic'] . $topic_id . $start_seo . $phpbb_seo->seo_ext['topic'];
//$phpbb_seo->page_url = $phpbb_seo->seo_static['topic'] . $topic_id . $phpbb_seo->start . $phpbb_seo->seo_ext['topic'];
$phpbb_seo->seo_cond(!$userdata['session_logged_in'] && ( strpos($uri, "sid=" ) !== FALSE ) );
if ( $phpbb_seo->do_redir || ( $postorder_redir && strpos($uri, 'watch=') === FALSE && strpos($uri, $phpbb_seo->page_url) === FALSE ) ) {
$phpbb_seo->seo_redirect( PHPBB_URL . $phpbb_seo->page_url . ( ( $post_id ) ? "#$post_id" : "" ) );
}
// www.phpBB-SEO.com SEO TOOLKIT END |
in viewtopic.php. Is that alright or I have to change smth else?
And again THANKS a bunch for your help!!  |
|
|
| Back to top |
|
 |
dcz Administrateur - Site Admin

Joined: 28 Apr 2006 Posts: 13607
|
Posted: Sun Feb 04, 2007 1:31 pm Post subject: Re: CH & win1251 & Simple mod rewrite |
|
|
Well, I cannot really tel for CH, if it's enough I mean, but it looks like you got the idea
There is just on thing about the pagination :
The $phpbb_seo->seo_start method is as well making sure the start param is acceptable, it will make sure the page is a page that exists, according to the boards settings.
For example if you set topics_per_page to be 15, and if start in url is for example 35, the url will be redirected to the second page, start = 30
The function is not designed to allow more than one pagination param, a simple tweak would be to implement an additional copy of the same method in phpbb_seo_class.php :
| Code: | /**
* check ppage var consistency
*/
function seo_ppage($ppage = 0, $limit = 0) {
if ($limit > 0) {
$start = ( is_int( $ppage/$limit ) ) ? $ppage : intval($ppage/$limit)*$limit;
$this->ppage = ( $ppage > 0 ) ? $this->seo_static['start'] . $ppage : '';
} else {
$this->ppage = ( $ppage > 0 ) ? $this->seo_static['start'] . $ppage : '';
}
} |
You'd need as well to add :
in the phpbb_seo class, as well as :
In the constructor.
Then, what you wrote above would become :
For index.php
| Code: | // www.phpBB-SEO.com SEO TOOLKIT BEGIN
$uri = $phpbb_seo->seo_req_uri();
$phpbb_seo->seo_cond(!$userdata['session_logged_in'] && (strpos($uri, "sid=" ) !== FALSE ));
if ($forum_id) { // we're in the forum case
// these two are most likely already knew at this stage in the regular code
// but I can't tell without running CH
$start_seo = _read('start', TYPE_INT);
$ppage_seo = _read('ppage', TYPE_INT);
$phpbb_seo->seo_start( $start_seo, $board_config['topics_per_page'] );
// here you need to replace $board_config['topics_per_page'] with this
// forum's ppage setting, there must be a var for this in CH code.
// not $board_config['topics_per_page'] ;)
$phpbb_seo->seo_ppage( $ppage_seo, $board_config['topics_per_page'] );
$phpbb_seo->page_url = $phpbb_seo->seo_url['forum'][$forum_id] . $phpbb_seo->seo_delim['forum'] . $forum_id . $phpbb_seo->ppage . $phpbb_seo->start . $phpbb_seo->seo_ext['forum'];
$topicday_redir = empty($_POST['topicdays']) && empty($_GET['topicdays']);
if ($_GET['topicdays'] == 0 || $_POST['topicdays'] == 0 ) {
$topicday_redir = TRUE;
}
if ( $phpbb_seo->do_redir || ( ($mark_read == '') && $topicday_redir && ( strpos($uri, $phpbb_seo->page_url) === FALSE ) ) ) {
$phpbb_seo->seo_redirect( PHPBB_URL . $phpbb_seo->page_url );
}
} else { // forum index call, juste check the index.php usage
// I am not sure CH would still use this var for marcking forums
$mark_use = ($userdata['session_logged_in']) ? $mark_read : '';
if (!empty($phpbb_seo->seo_static['index'])) {
$phpbb_seo->seo_cond(( $mark_use == '' && strpos($uri, $phpbb_seo->seo_static['index']) === FALSE ), TRUE);
} else {
$phpbb_seo->seo_cond(( $mark_use == '' && strpos($uri, "index.$phpEx") !== FALSE ), TRUE);
}
if ( $phpbb_seo->do_redir) {
$phpbb_seo->seo_redirect(PHPBB_URL . $phpbb_seo->seo_static['index']);
}
}
// www.phpBB-SEO.com SEO TOOLKIT END
|
So you'll have to work a bit on finding the correct var for this forum's ppage param. As well the $mark_read var could be different in CH.
Note that this way, the ppage param just cannot be something else than default.
We could add a user logged in check in the ppage method to allow special ppage settings for logged user.
So let's see how this work, and everything will be obvious for viewtopic.php
++ |
_________________ Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________
Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche |
|
| Back to top |
|
 |
vitok
Joined: 25 Jan 2007 Posts: 10
|
Posted: Sun Feb 04, 2007 5:12 pm Post subject: Re: CH & win1251 & Simple mod rewrite |
|
|
Thanks for seo_ppage function
| dcz wrote: | | these two are most likely already knew at this stage in the regular code |
It seems to me they are not. I can find the strings
| Code: | $topics = new topics();
$topics->read($forum_id); |
only somewhere in the middle of index.php and
| Code: | $this->parms = array_merge($this->parms, array(
'start' => _read('start', TYPE_INT),
'ppage' => _read('ppage', TYPE_INT),
'topicdays' => _read('topicdays', TYPE_INT),
'sort' => _read('sort', TYPE_NO_HTML, '', array('' => '') + $this->sort_fields),
'order' => strtoupper(_read('order', TYPE_NO_HTML, '', array_flip(array('', 'asc', 'ASC', 'desc', 'DESC')))),
)); |
is the part of read function in class_topics.php.
| dcz wrote: | | So you'll have to work a bit on finding the correct var for this forum's ppage param. As well the $mark_read var could be different in CH. |
Ok, I understand. I'll check on this...
I've finally uploaded everything on www.osvic.ru
I'm not just looking happy, I am happy!!  |
|
|
| Back to top |
|
 |
|
|
| Navigation |
Similar Topics |
|
|
|
|
|
|
|