mod_rewrite: RewriteRule

HrHr

Новичок
mod_rewrite: RewriteRule

Правило:
RewriteRule ([a-zA-Z0-9_-]+)/$ index2.php?page=$1

Запрос:
http://127.0.0.1/test/index/

index2.php:
echo $_GET['page']; // php
Почему ?
Любые другие слова работают нормально.

php 4.4.0, apache 1.3.33, xp sp1

-~{}~ 01.09.05 01:06:

А, это если такая страница есть то пишет php. Как этого избежать ?
 

digs

Новичок
Где лежит index2.php ?
Какие есть еще правила, близко относящиеся к этому?
 

svetasmirnova

маленький монстрик
HrHr
Мы пойдём другим путём (c):
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^/test
RewriteRule ([a-zA-Z0-9_-]*)$ index.php?page=$1 [L]
 

HrHr

Новичок
svetasmirnova
http://127.0.0.1/test/index
page=php

http://127.0.0.1/test/123
The requested URL /index.php was not found on this server.
:(
 

digs

Новичок
Если index.php в корне сайта то слеш добавь

RewriteRule ([a-zA-Z0-9_-]*)$ /index.php?page=$1 [L]

или если в test то:

RewriteRule ([a-zA-Z0-9_-]*)$ /test/index.php?page=$1 [L]
 

kruglov

Новичок
А не проще сделать просто
RewriteRule ([a-zA-Z0-9_-]+)/$ index2.php,
а QUERY_STRING уже в этом index2.php изучать.

-~{}~ 02.09.05 10:29:

p. s.
"The requested URL /index.php was not found on this server."
Хы-хы. Так у вас скрипт index2.php или index.php?
Вам примеры дают для копирования или понимания?
 

HrHr

Новичок
digs
или если в test то:

RewriteRule ([a-zA-Z0-9_-]*)$ /test/index.php?page=$1 [L]
А какая разница между этим и RewriteBase /test/ ..

kruglov
а QUERY_STRING уже в этом index2.php изучать.
Да, так работает. Только не QUERY_STRING, а REQUEST_URI
Но хотелось бы, чтобы работало как я делаю.

Я так понимаю, что это из-за того, что апач разрешает обращаться к php файлам таким образом: /test/index/
А это равносильно запросу /test/index.php
Так вот до мод реврайта "доходит" изменый запрос (/test/index.php), поэтому page=php :)
Т.е надо сделать так, чтобы запросы вида /test/index/ не обрабатывались как /test/index.php
Какая настройка апача отвечает за это ? :)
 

digs

Новичок
Я так понимаю, что это из-за того, что апач разрешает обращаться к php файлам таким образом: /test/index/
А это равносильно запросу /test/index.php
а не /test/index/index.php ли это равносильно?
 

HrHr

Новичок
kruglov
"The requested URL /index.php was not found on this server."
Хы-хы. Так у вас скрипт index2.php или index.php?
Вам примеры дают для копирования или понимания?
Не надо тут хыкать.
Когда я обнаружил это в своем проекте, то создал файл index2.php чтобы проверять значения 'page'. Потом решил вынести все это в отдельную папку (/test/), а файл index2.php так и остался. Потом я его просто переименовал.

-~{}~ 02.09.05 13:14:

digs
а не /test/index/index.php ли это равносильно?
Нет. Возьми и проверь
 

digs

Новичок
Если ты указал слеш, то так и будет. Просто у тебя нет каталога index и поэтому вызывается (по наследованию) .htaccess лежащий в test. Но считается, что каталог все же test/index. Поэтому он и ругается, потому что этого каталога нет, а значити в нем нет и index.php
 
Сверху