Как сделать норамальный ЧПУ?

M3
На сайте с 28.09.2006
Offline
1
630

Надо сделать, чтобы при обращении к скрипту по адресу www.mysite.ru/cgi-bin-script.cgi?=... адрес подменялся бы на www.mysite.ru/script.htm или www.mysite.ru/script/.

Сделал, чтобы при вводе адреса www.mysite.ru/script.htm скрипт работал, а вот наоборот не получается.

Дело в том, что при повторном запросе к скрипту с адреса www.mysite.ru/script.htm адрес тут же меняется на www.mysite.ru/cgi-bin-script.cgi?=...

Как с этим можно бороться?

P.S. В поиске был, ничего не получилось :gm:

H
На сайте с 24.10.2005
Offline
50
#1

удалено 10 греев

Вы вероятно не оцениваете мощь и глупость школьников, два этих фактора способны свернуть горы, а сегодня мы делаем шаг к тому чтобы выпустить этого джини на свободу (/ru/forum/comment/4436338)
AVV
На сайте с 31.07.2006
Offline
84
AVV
#2

От статики к динамике

Описание:

Как можно трансформировать статическую страницу foo.html в её динамический вариант foo.cgi незаметным образом, т.е. так чтобы ни браузер ни пользователь не заметили этого.

Решение:

Мы просто перенаправляем URL на CGI-скрипт и корректируем MIME-тип так чтобы это действительно работало как CGI-скрипт. Таким образом запрос к foo.html внутренне приведет к вызову foo.cgi.

RewriteEngine on
RewriteRule ^foo\.html$ foo.cgi [T=application/x-httpd-cgi]

Руководство по URL преобразованиям

http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html (c)

M3
На сайте с 28.09.2006
Offline
1
#3

AVV

Спасибо, я это сделал. Дело в том, что на полученной странице есть форма поиска, если я ввожу какие-нибудь данные и нажимаю "Искать", то адрес из mysite.ru/script.html тут же становится вида mysite.ru/cgi-bin/script.cgi?=...

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

AVV
На сайте с 31.07.2006
Offline
84
AVV
#4
mark3100:
AVV
Спасибо, я это сделал. Дело в том, что на полученной странице есть форма поиска, если я ввожу какие-нибудь данные и нажимаю "Искать", то адрес из mysite.ru/script.html тут же становится вида mysite.ru/cgi-bin/script.cgi?=...
Вот я пытаюсь сделать, чтобы адрес оставался неизменным.

А в форме, что написано? Так?

<FORM ACTION="http://mysite.ru/script.html" METHOD="GET">

Может быть как-то вот так попробовать в .htaccess:


AddHandler server-parsed .html
RewriteEngine on
RewriteRule ^script\.html$ cgi-bin-script.cgi?%{QUERY_STRING} [L]

А Options MultiViews включена? Тогда в форме можно просто писать script без расширения .html

<FORM ACTION="http://mysite.ru/script" METHOD="GET">

M3
На сайте с 28.09.2006
Offline
1
#5

AVV

Спасибо огромное, теперь заработало 🍻 Подправил .htaccess как в последнем совете.

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