mod_rewrite

Segey
На сайте с 23.08.2005
Offline
404
705

Решил все описать в одном файле по такому принципу:

RewriteEngine on
RewriteBase /papka1
RewriteRule ^([a-z]+)\.html$ ?letter=$1
RewriteRule ^([a-z]+)([0-9]+)\.html$ index.php?letter=$1&page=$2

RewriteEngine on
RewriteBase /papka2
RewriteRule ^([a-z]+)\.html$ ?letter=$1
RewriteRule ^([a-z]+)([0-9]+)\.html$ index.php?letter=$1&page=$2

Т.е. 2 разных скрипта в 2 папках. Но суть не в правиле, там все ок. Проблема в том, как все это правильно описать в одном файле, чтобы те или иные правила предназначались только к определенной папке. Если убрать нижние 4 строчки для второй папки, то все работает, если нет - то не работает. Как это правильно описать? :confused:

Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
Хелпзонович
На сайте с 15.06.2005
Offline
133
#1
Segey:
...или иные правила предназначались только к определенной папке. Если убрать нижние 4 строчки для второй папки, то все работает, если нет - то не работает. Как это правильно описать? 😕

Если для каждой папки свои


RewriteEngine on
RewriteBase /

RewriteRule ^papka1/([a-z]+)\.html$ ?letter=$1
RewriteRule ^papka1/([a-z]+)([0-9]+)\.html$ index.php?letter=$1&page=$2

RewriteRule ^papka2/([a-z]+)\.html$ ?letter=$1
RewriteRule ^papka2/([a-z]+)([0-9]+)\.html$ index.php?letter=$1&page=$2
Вы там держитесь! Хорошего вам настроения. Здоровья.
Segey
На сайте с 23.08.2005
Offline
404
#2

Теперь выходит, что нужно писать:

RewriteRule ^papka1/([a-z]+)([0-9]+)\.html$ papka1/index.php?letter=$1&page=$2

т.е. еще раз папку указывать перед тем url в который подставляем...

Получается нет возможности поставить 2 преффикса?

Хелпзонович
На сайте с 15.06.2005
Offline
133
#3

Ага, кажется понял :)

Все гениальное - просто :)


RewriteEngine on
RewriteBase /

RewriteRule ^(.*)/([a-z]+)\.html$ $1/?letter=$2
RewriteRule ^(.*)/([a-z]+)([0-9]+)\.html$ $1/index.php?letter=$2&page=$3

Пишу по памяти, может со слешами напутал, проверяйте

Segey
На сайте с 23.08.2005
Offline
404
#4

Вот еще проблема возникла:

url вида

papka/papka2/My name.html (латинскими буквами, есть пробелы, цифры и -)

RewriteRule ^papka/papka2/([^_]+)\.html$ papka/papka2.php?name=$1

Никак не хочет работать, не образует переменную из "My name".

Т.е. страница "papka/papka2/My name.html" открывается, но переменной там где надо нет.

Хелпзонович
На сайте с 15.06.2005
Offline
133
#5

Попробывал у себя такое.

правило


RewriteRule ^test/test2/([^_]+)\.html$ /cgi-bin/test.cgi?url=$1

сам test.cgi


#!/usr/bin/perl
use CGI qw(:all);

my $url=param('url');

print "Content-type: text/html\n\n";
print "<h1>$url";

Работает...

не уверен, но может проблема в настройках сервера.

А вообще давай в Аську.

M
На сайте с 21.11.2004
Offline
230
#6
Segey:
Как это правильно описать?

А как делают? Делаают по правилу на строку. Бывает что для некоторых сайтов мод реврайт на несколько десятков строчек растягивается.

Продвигаю домены руками (http://roke.ru)
SZ
На сайте с 17.08.2005
Offline
63
#7

Вот чего-то я тож начал клинить с htaccess =)

Задача.

Перенаправлять с

http://www.site.ru/index.php?page=avto&hl=

на страницу

http://www.site.ru/index.php?page=avto

т.е. по сути просто убрать &hl в конце.

Пишу в htaccess

RewriteRule ^(.*)&hl=$ $1 [L,R=301]

но не выходит.

В чем загвоздка, подскажите плиз.

Gordon01
На сайте с 21.05.2006
Offline
12
#8
Segey:
Решил все описать в одном файле по такому принципу:
Т.е. 2 разных скрипта в 2 папках. Но суть не в правиле, там все ок. Проблема в том, как все это правильно описать в одном файле, чтобы те или иные правила предназначались только к определенной папке. Если убрать нижние 4 строчки для второй папки, то все работает, если нет - то не работает. Как это правильно описать? 😕

Теоретически это не всегда будет работать ди и скорость ниже, чем куча .htaccess в куче разных папок.

Проблемы с сервером? Не та кодировка в MySQL? 404? Настройка VPS/VDS (forum.searchengines.ru/showthread.php?t=69437)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий