Мини проблемка с .htaccess

R
На сайте с 25.08.2012
Offline
16
668

Здравствуйте, уважаемые участники сёрча!

Есть index.php в котором:

<?php echo $_GET['t']; ?>

Ввожу в адресную строку:

localhost/test/?t=1-vasya.pupkin-p1...

Скрипт выводит:

1-vasya.pupkin-p1...

Создаю файл .htaccess, в котором пишу:

RewriteEngine on

RewriteRule ^([0-9]+-[a-z]+\.[a-z]+-p[0-9]+)$ ?t=$1

Ввожу в адресную строку:

localhost/test/1-vasya.pupkin-p1...

Скрипт выводит:

1-vasya.pupkin-p1 ( без точек )

Подскажите, пожалуйста, как сделать так, чтобы в конце могли бы быть только цифры?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1

ТС, вчера тема подымалась же!

В смысле могли бы быть? Чтобы вообще нереально было УРЛ такой написать? Или чтобы если с точками, то отдавал 404 страницу? Или редиректил на главную? Хотелки свои грамотней изложите.

Подпись))
R
На сайте с 25.08.2012
Offline
16
#2

Милованов Ю.С, да, тему поднимал, но решил переформулировать вопрос, поэтому создал новую. Я бы хотел, чтобы если в конце запроса точки, то отдавалась 404. Но я не понимаю, почему правило не реагирует на точки, которые написаны в конце гет-запроса.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#3

Вам обязательно в ХТАЦЦЕСС?

В теле скрипта не устроит?

if (последний_символ($_GET['youVar']) == '.')

header("HTTP/1.0 404 Not Found");

R
На сайте с 25.08.2012
Offline
16
#4

Нет, в htaccess не обязательно.

Извините, не понял if (последний_символ($_GET['youVar']) == '.')?

И, кстати, если вводить localhost/test/1-vasya.pupkin-p1... а не localhost/test/?t=1-vasya.pupkin-p1... , то в $_GET['t'] нет последних точек, поэтому вот это: if (последний_символ($_GET['youVar']) == '.') походу дела не сработает.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#5

localhost/test/1-vasya.pupkin-p1

Ну так и надо.

Вы же реврайт руль прописали.

А localhost/test/?t=1-vasya.pupkin-p1... это прямой запрос

вы вчера писали, чтобы нельзя было по этому адресу достучаться

Что сейчас желаете?

R
На сайте с 25.08.2012
Offline
16
#6

Так вся соль в том, что страница 1-vasya.pupkin-p1 открывается и по запросу 1-vasya.pupkin-p1 и по запросу 1-vasya.pupkin-p1. и по запросу 1-vasya.pupkin-p1..................... А мне надо чтобы эта страница открывалась только по запросу 1-vasya.pupkin-p1

Даже можно и проще сделать. Написал в htaccess вот что:

RewriteEngine on

RewriteRule ^([a-z]+)$ ?t=$1

Ввожу в адресную строку localhost/test/aa...

Скрипт выводит aa ( Опять же без точек!!!)

Ввожу в адресную строку localhost/test/?t=aa...

Скрипт выводит aa... Как положено, с точками!

Так как тогда проверить что ввел пользователь? Или это не реально? Не верю!

siv1987
На сайте с 02.04.2009
Offline
427
#7

rubodon, одной темы мало? Очевидно что это особенность rewriteRule, он не перехватывает точки, и соответственно не передает дальше скрипту. Поэтому без мод_реврайта показываются, а с ним - нет.

R
На сайте с 25.08.2012
Offline
16
#8

siv1987, а как же быть? Не использовать мод рерайт я не могу, а с ним, получается не могу проверить, есть ли точки в конце урла или нет? Или все-таки как-то можно это проверить, несмотря на мод рерайт?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#9

ТС, залейте все файлы на файлообменник в RAR архиве и дайте линк.

Приду домой - проверю. Уж очеееень интересно, что у Вас там.

R
На сайте с 25.08.2012
Offline
16
#10

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