Forum Webscript.Ru

Общие => Веб Сервера => Тема начата: Greg от 04 Октября 2007, 11:51:51

Название: mod_rewrite
Отправлено: Greg от 04 Октября 2007, 11:51:51
помогите с правилами. берусь за него первый раз и нужно сделать достаточно быстро, поэтому нет времени на тотальное изучение (ну, простите! обязательно потом изучу!).

итак, есть урл вида http://www.site.ru/catalog/yyyy-mm-dd/document_id/
нужно чтобы открывалась страница
http://www.site.ru?url=document_id/
doceument_id - число
catalog - просто буквы
yyyy-mm-dd - дата вида 2007-10-04

что нужно писать в .htaccess
Название: mod_rewrite
Отправлено: html_coder от 04 Октября 2007, 12:58:54
Greg


А какой смысл в /catalog/yyyy-mm-dd/ если они в скрипт не передаются, просто для красоты, почему тогда нельзя сделать просто url вида http://www.site.ru/document_id/?
Название: mod_rewrite
Отправлено: commander от 04 Октября 2007, 13:17:38
Greg
RewriteEngine On
Options +FollowSymLinks
RewriteBase /

RewriteRule ^/catalog/yyyy-mm-dd/([0-9]+)/$ /url=$1/ [L]
RewriteRule ^/catalog/yyyy-mm-dd/([0-9]+)$ /url=$1/ [L]
Название: mod_rewrite
Отправлено: Greg от 04 Октября 2007, 14:09:09
html_coder
ну пусть они тоже передаются тогда. в ринципе необходимости в них нет, но можно оставить на будущее. а смысл в них в том, чтобы пользователь мог видеть это в ссылке. идея не моя, условие поставлено, нужно решить ;)

commander
catalog, yyyy-mm-dd - это я привел просто шаблоны. т.е. ссылка может выглядеть так:http://www.site.ru/auto/2007-10-04/82658/
или так http://www.site.ru/global/2006-04-25/12654/
в правилах, которые вы привели, это учитывается?
там наверное тоже регулярки какие то проставить?
Название: mod_rewrite
Отправлено: commander от 04 Октября 2007, 16:31:39
Greg

RewriteRule ^/catalog/(.*)/([0-9]+)$ /url=$1/ [L]
Название: mod_rewrite
Отправлено: Greg от 05 Октября 2007, 08:33:37
commander
спасибо. но выходит 404 :( приведу полностью текст .htaccess:
Цитировать
ExpiresActive On
ExpiresDefault "modification plus 0 minutes"

ErrorDocument 404 /errors/404.html

RewriteEngine On
Options +FollowSymLinks
RewriteBase /
RewriteRule ^/(.*)/(.*)/([0-9]+)/$ /url=$1/ [L]
RewriteRule ^/(.*)/(.*)/([0-9]+)$ /url=$1/ [L]
Название: mod_rewrite
Отправлено: commander от 05 Октября 2007, 09:51:06
RewriteEngine On
Options +FollowSymLinks
RewriteBase /
RewriteRule ^/(.*)/(.*)/([0-9]+)/$ /url=$3/ [L]
RewriteRule ^/(.*)/(.*)/([0-9]+)$ /url=$3/ [L]
Название: mod_rewrite
Отправлено: Greg от 05 Октября 2007, 14:14:50
наешл таки ошибку - в начале не нужен слеш!
вот итог:
Цитировать
RewriteEngine On
Options +FollowSymLinks
RewriteBase /
RewriteRule ^([a-z]+)/(.*)/([0-9]+)$ /?cat=$1&date=$2&ext_news=$3 [L]
RewriteRule ^([a-z]+)/(.*)/([0-9]+)/$ /?cat=$1&date=$2&ext_news=$3 [L]

RewriteRule ^([a-z]+)/(.*)/images/(.*)$ /images/$3
RewriteRule ^([a-z]+)/(.*)/images/(.*)/$ /images/$3
RewriteRule ^(.*)scripts/(.*)$ scripts/$2
RewriteRule ^(.*)css/(.*)$ css/$2
RewriteRule ^(.*)js/(.*)$ css/$2

вторая часть кода "исправляет" пути к какртинкам, скриптам и т.п. осталось одно: сделать алиас ссылки. т.е. чтобы domain.site.ru/link и site.ru/link ссылались на одну и ту же страницу. я так полагаю, что нужно как то хост переписывать?
Название: mod_rewrite
Отправлено: commander от 06 Октября 2007, 10:53:17
Greg
если есть доступ к конфигу ... пропиши путь просто и делу конец...
Название: mod_rewrite
Отправлено: Greg от 08 Октября 2007, 10:49:00
commander
к конфигу доступа нет, админ велит делать все в .htaccess
Название: mod_rewrite
Отправлено: AlainDelon от 05 Ноября 2007, 15:03:46
Раз уж пошла такая тема, то и я вопрос задам. Опять наш пример сайт: www.site.ru. Как сделать, что бы на сайте на любую ссылку жмёшь, происходит переход, но в адресной строке эксплорера по прежнему написанно http://www.site.ru/, а не http://www.site.ru/что-то_там_ещё.html. Короче всегда http://www.site.ru/, всё равно куда жмёшь.