Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Неправильно работают свои правила mod_rewrite

#1 Shimo

Shimo
  • Пользователь
  • 4 сообщений
  • Репутация: 0
0

Отправлено 11 Апрель 2011 - 13:07

Помогите решить проблему такого вида, при использовании nanocms.
Есть папка news в content мне нужно чтобы в индекс файл передавались переменные $temp1 и $temp2 при этом адресация строилась так http:\\site.ru\news\temp1\temp2\ при этом открывалась папка news с передачей данных переменной вот две попытки изменения .htaccess

первый вариант

RewriteEngine on
RewriteRule ^.htaccess$ - [F]

RewriteRule ^/data/content/news/([0-9]+)/(.*)/$ index.php?temp1=$1&temp2=$2 [L]
RewriteRule ^/data/content/news/([0-9]+)/$ index.php?temp3=$1 [L]

RewriteRule ^goto/$ goto/index.php
RewriteRule ^(.*).htm$ index.php
RewriteRule ^(.*)/$ index.php

второй вариант

RewriteEngine on
RewriteRule ^.htaccess$ - [F]

RewriteRule ^news/([0-9]+)/(.*)/$ index.php?temp1=$1&temp2=$2 [L]
RewriteRule ^news/([0-9]+)/$ index.php?temp3=$1 [L]

RewriteRule ^goto/$ goto/index.php
RewriteRule ^(.*).htm$ index.php
RewriteRule ^(.*)/$ index.php

Оба варианта выводит как отсутствующая страница, что я сделал неверно?
При этом необходимо сохранить структуру строения сайта на nanocms, то есть другие папки должны обрабатываться как обычно только news нужно изменить.

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Апрель 2011 - 22:20

Shimo, первый вариант не понятно зачем нужен. Зачем такие вложенности. Смотрите, пс лучше относится к страницам более высокого уровня (меньшей вложенности).

Покажите какие ссылки должны обрабатываться вашими правилами. Потому что, как минимум ваша ссылка httр://site.ru/news/temp1/temp2/ уже не пройдет, т.к. у вас в регулярках:
temp1 -> последовательность цифровых символов больше одного
temp2 -> последовательность любых допустимых в url символов 0 или более.

И возможно стоит сделать последний слеш необязательным, а то может вы на этом напоролись.
  • 0

#3 Shimo

Shimo
    Topic Starter
  • Пользователь
  • 4 сообщений
  • Репутация: 0

Отправлено 14 Апрель 2011 - 18:15

Shimo, первый вариант не понятно зачем нужен. Зачем такие вложенности. Смотрите, пс лучше относится к страницам более высокого уровня (меньшей вложенности).

Покажите какие ссылки должны обрабатываться вашими правилами. Потому что, как минимум ваша ссылка httр://site.ru/news/temp1/temp2/ уже не пройдет, т.к. у вас в регулярках:
temp1 -> последовательность цифровых символов больше одного
temp2 -> последовательность любых допустимых в url символов 0 или более.

И возможно стоит сделать последний слеш необязательным, а то может вы на этом напоролись.


Необходимо передать в новости 2 переменные порядок я указал первая хранит набор цифр любой многозначный и не допустимы буквы и спец символы, вторая переменная хранит любой набор букв цифр и символ _(подчеркивания) то есть можем иметь такой вариант
http:\\test.ru\news\556329\prosto_5_stroka\
данное разбиение строки нужно только для папки news остальные папки должны работать как обычно в этой cms.

Я про mode rewrite ничего не знаю тыкался сам наобум пытаясь сделать так как мне нужно но ничего не вышло.
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 14 Апрель 2011 - 22:16

Shimo, важно так же где лежит файл .htaccess, если на одном уровне с папкой news, то можно писать так:
RewriteRule ^news/([0-9]+)/([_a-z0-9]+)/?$ index.php?temp1=$1&temp2=$2 [L,NC]
где:
  • ([0-9]+) - карман, содержащий только цифры (помещается в temp1)
  • ([_a-z0-9]+) - карман, содержащий буквы, цифры и "_" (помещается в temp2)
  • флаг L - конечное правило, если совпало далее не идем.
  • флаг NC - не учитываем регистр символов (это чтобы не писать в кармане a-zA-Z)

  • 0

#5 Shimo

Shimo
    Topic Starter
  • Пользователь
  • 4 сообщений
  • Репутация: 0

Отправлено 15 Апрель 2011 - 02:41

Shimo, важно так же где лежит файл .htaccess, если на одном уровне с папкой news, то можно писать так:

RewriteRule ^news/([0-9]+)/([_a-z0-9]+)/?$ index.php?temp1=$1&temp2=$2 [L,NC]
где:
  • ([0-9]+) - карман, содержащий только цифры (помещается в temp1)
  • ([_a-z0-9]+) - карман, содержащий буквы, цифры и "_" (помещается в temp2)
  • флаг L - конечное правило, если совпало далее не идем.
  • флаг NC - не учитываем регистр символов (это чтобы не писать в кармане a-zA-Z)


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

RewriteEngine on
RewriteRule ^.htaccess$ - [F]

RewriteRule ^goto/$ goto/index.php
RewriteRule ^(.*).htm$ index.php
RewriteRule ^(.*)/$ index.php

лежит он в корне сайта, но что то постоянно блокирует, других .htaccess файлов нет.
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Апрель 2011 - 12:57

Shimo, зачем в папке контента. В корень нужно эту строку поместить, в стандартный файл, допустим перед строкой:
RewriteRule ^goto/$ goto/index.php
Т.е. весь файл будет выглядеть так:
RewriteEngine on
RewriteRule ^.htaccess$ - [F]

RewriteRule ^news/([0-9]+)/([_a-z0-9]+)/?$ index.php?temp1=$1&temp2=$2 [L,NC]

RewriteRule ^goto/$ goto/index.php
RewriteRule ^(.*).htm$ index.php
RewriteRule ^(.*)/$ index.php

  • 0


Оформление форума – IPBSkins.ru