Recent Topics

Pretty/Fancy URL with mod_rewrite

Started by on Nov 30, 2008 – Contents updated: Nov 30, 2008

Nov 30, 2008 13:42    

Народ,

по умолчанию ссылки в b2evo включают какой-то *.php файл, например:

http://mysite.net/blogs/blog1.php/myblog/2008/08/08/my-post
http://mysite.net/blogs/index.php/myblog/2008/08/08/my-post

Вопрос: как можно получить ссылки без *.php файла внутри, например:

http://mysite.net/blogs/myblog/2008/08/08/my-post

Ну или что-то подобное (в зависимости от формата URL выбранного в настройках), скажем

http://mysite.net/blogs/myblog/my-post

Главное, чтобы там не светился *.php, а были просто имена (пользователя, блога и т.п.)

Я знаю, что это надо делать в .htaccess. Более того, я когда-то уже сделал подобное для mtdiawiki. Но тут я все изучил и много уже всего перепробовал, но проблема не решается, так что я зашел в полный ступор.

Возможно, у кого-то есть готовый .htaccess для данной задачи ну или ссылки, где это конструктивно описывает.

Спасибо.

Nov 30, 2008 16:09

тоже очень интересует

Dec 02, 2008 08:50

Вот готовый .htaccess файл (один блог)

Code

#===============
# CATCH EVERYTHING INTO B2EVO:
 
<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>
 
Options +FollowSymlinks
RewriteEngine on
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php

После чего нужно зайти в Настройки блога > URL и указать в поле Абсолютный URL: адрес блога (как и $baseurl выбранный при установке)

Пример: адрес блога - http://www.blog.com/ значит в Абсолютный URL пишем "http://www.blog.com/" без кавычек.

Это удобно только тогда когда у вас один блог.

###############################

Если блогов много, то для каждого делаем заглушку (за основу берем файлы blog1-7.php и даем им красивые названия). После чего добавляем к файлу .htaccess следующие строки, заменяя название блогов на свои (без .php )

Готовый вариант .htaccess (несколько блогов)

Code

#===============
# CATCH EVERYTHING INTO B2EVO:
 
<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>
 
Options +FollowSymlinks
RewriteEngine on
 
# Add new blogs here
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(blog1|blog2|blog3|blog4)(/.*)?$  $1.php
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php

После чего пишем в Абсолютный URL каждого блога
"http://www.blog.com/blog1/"
"http://www.blog.com/blog2/"
и т.д.

ЗЫ
Проверено на блоге, установленном в корень сайта т.е. в www.blog.com , а не в www.site.com/blog/ так что может и не саботать во втором случае :-/

Удачи

Dec 04, 2008 21:51

sam2kb wrote:

После чего нужно зайти в Настройки блога > URL и указать в поле Абсолютный URL: адрес блога (как и $baseurl выбранный при установке)

Пример: адрес блога - http://www.blog.com/ значит в Абсолютный URL пишем "http://www.blog.com/" без кавычек.

Точно. Как только это сделал, все сразу заработало с прилагаемым .htaccess, который лежит в каталоге e2evo (а не в корне сайта). (Абсолютный УРЛ доступен для изменения только админом.)

sam2kb wrote:

Проверено на блоге, установленном в корень сайта т.е. в www.blog.com , а не в www.site.com/blog/ так что может и не саботать во втором случае :-/

Работает. Просто абсолютный УРЛ должеть указывать на каталог блога, например: "http://www.site.com/blogs/myblog/". Ну и заглушка как обычно и .htaccess.

Единственная проблема, что сайт не загружается по ссылке "http://www.site.com/blogs" (без слеша в конце), а если с закрывающим слешем, то все нормально. Но это мелочь.

Не очень понятно (ну в смысле, совем непонятно) зачем нужно SEO? Там многие параметры такие же как и в УРЛ, да еще мужики какие-то. Нажал ссылку на помощь, а там пусто.

Dec 05, 2008 03:59

На вкладке SEO можно сделать "тонкую" настройку того, что было выбрано в URL. Для больштнства пользователей это не нужно.
Картинки - это предустановленные настройки SEO, выполненные соглано представлениям тех, кто на них изображен.

Dec 05, 2008 20:08

sam2kb, описаный вами метод прекрасно работает! все три блога теперь с красивыми ссылками, что очень приятно!
Спасибо!

Dec 05, 2008 20:39

Хорошо что все работает.

Мною был замечен баг:
Были случаи, когда сайт выдает 500-ю ошибку после помещения строки Options +FollowSymlinks в .htaccess файл. В этом случае просто удалите указанную строку.

Dec 05, 2008 21:44

sam2kb wrote:

Мною был замечен баг

спасибо, буду знать, но пока все отлично!

Jan 22, 2009 18:48

То есть, мне надо вручную прописать в хтацесс уже существующие блоги, новое их имя?
А если будут ещё регистрироваться, то они уже будут с новым коротким урлом или это только по желанию, по собственному изменению урлов юзерам надо будет делать? И не нужно ли тогда будет вручную добавлять в хтацесс новые имена?

Jan 22, 2009 21:13

То есть, мне надо вручную прописать в хтацесс уже существующие блоги, новое их имя?

Должно быть где-то так

Code

# Add new blogs here
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(blogoport|avatar|vader)(/.*)?$  $1.php

Затем поменяйте абсолютный URL блов на
http://blogoport.com.ua/blogoport/
http://blogoport.com.ua/avatar/ и т.д.

А вот чтобы новые создавались без index.php надо подправить Userblog plugin и придумать как автоматически добавлять название блога в .htaccess

Я этим займусь в ближайшее время

Jan 22, 2009 21:16

Спасибо!
Юзерблог плугин стоит.
Придётся руками менять пока...


Form is loading...

powered by b2evolution – This forum is powered by b2evolution CMS, a complete engine for your website.