mod rewrite и знак вопроса в УРЛ

12
T
На сайте с 19.09.2012
Offline
29
#11
Art-Host:
В указанном выше случае POST работать не будет, так как параметры передаются через GET.

По-моему, я именно об этом и написал.

V
На сайте с 30.09.2004
Offline
144
#12

Т.е. выход тут один - свои все адреса приводить к ЧПУ, т.е. вместо /file.php?pas=44 сделать /file44.php и все?

Нет команд именно типа исключений, что для файлов вида

/file.php - знак вопроса может быть, а для остальных

RewriteBase /

RewriteCond %{QUERY_STRING} ^.+$

RewriteRule (.*) ----.html [L]

?

AH
На сайте с 18.03.2006
Offline
204
#13
Vodoleev:
Т.е. выход тут один - свои все адреса приводить к ЧПУ, т.е. вместо /file.php?pas=44 сделать /file44.php и все?

Нет команд именно типа исключений, что для файлов вида
/file.php - знак вопроса может быть, а для остальных

RewriteBase /
RewriteCond %{QUERY_STRING} ^.+$
RewriteRule (.*) ----.html [L]

?

Вариантов множество:

Вот примеры:

RewriteEngine on

RewriteRule ^file([^(.*)]*)\.html$ /file.php?pass=$1

RewriteRule ^file([^(.*)]*)\/$ /file.php?pass=$1

RewriteRule ^file\/([^(.*)]*)\.html$ /file.php?pass=$1

RewriteRule ^file\/([^(.*)]*)\/$ /file.php?pass=$1

Цены на регистрацию доменов ( https://1reg.online/domains.price ).
siv1987
На сайте с 02.04.2009
Offline
427
#14

Ну и насоветовали тут... Vodoleev, я вам написал два признака, по которым можно наверняка исключить инклуд-запросы, кстати я не вижу где результат проверки по ай-пи адресу?

Vodoleev:
Нет команд именно типа исключений, что для файлов вида
/file.php - знак вопроса может быть, а для остальных

Либо вы путаетесь в своем тз, либо неправильно вначале его озвучили. Если для /file.php QUERY_STRING может быть в любом виде, и инклуд и прямые запросы, то это решается очень просто

RewriteEngine On

RewriteCond %{QUERY_STRING} !^$

RewriteCond %{REQUEST_URI} !^/file\.php$

RewriteRule (.*) /$1? [R=301,L]

Art-Host:
^file([^(.*)]*)

Жесть.

Art-Host, перечитайте еще раз задание.

V
На сайте с 30.09.2004
Offline
144
#15

siv1987, спасибо, пробую, но что-то не так.

Надо:

1. Чтобы в коде инклуды с параметрами после ? работали

2. Чтобы "файлы-исключения" работали тоже с ? при переходе по сайту, в адресной строке

3. Все остальные файлы, при дописывании к ним ?blabla, чтобы не работали.

Код

RewriteEngine On
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{REQUEST_URI} !^/file\.php$
RewriteRule (.*) /$1? [R=301,L]

работает, но вот что смущает:

1. Если к файлу http://site.ru/file.htm дописать ?333333 - то редиректит на http://site.ru/file.htm Супер.

2. НО! Работают и все инклуды, и файлы в подпапках вида http://site.ru/papka/papka2/script.php?pam=44 хотя в .htaccess я эти файлы НЕ перечислил еще даже, просто скопировал ваш код для несуществующего file.php

RewriteCond %{QUERY_STRING} !^$

RewriteCond %{REQUEST_URI} !^/file\.php$

RewriteRule (.*) /$1? [R=301,L]

Что тут не так?:)

siv1987
На сайте с 02.04.2009
Offline
427
#16
2. НО! Работают и все инклуды, и файлы в подпапках вида http://site.ru/papka/papka2/script.php?pam=44

Не должны.

Либо a) в этих папках есть свой htaccess с включенным/выключенным RewriteEngine b) перед редиректом находятся другие правила мод_реврайта которые перехватывают эти запросы. Добавьте редирект в самом вверху, сразу за rewriteengine

V
На сайте с 30.09.2004
Offline
144
#17

Проверил, в адресной строке действительно теперь не работает, если нет исключения в RewriteCond %{REQUEST_URI} !^/file\.php$ или нет в папке с файлом своего .htaccess

А инклуды работать должны любые? Просто в папках, где инклудящиеся файлы, нет .htaccess, но они работают:) В общем-то и так хорошо, просто для понимания процесса интересуюсь:)

siv1987
На сайте с 02.04.2009
Offline
427
#18
Vodoleev:
А инклуды работать должны любые?

Хз, я смотрел на php-include, про ssi ничего не скажу.

12

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