как отправить пользователей напрямую в mod-rewrite url из формы? - PullRequest
0 голосов
/ 06 декабря 2011

Я использую эту форму для поиска на моем сайте

<form id="search" action="/search.php" method="get">
        <input type="text" onfocus="this.value='';this.style.color='black'" value="Search here" name="tag" id="search-text" />
                    <input type="image" src="/search-new.gif" alt="Search" id="search-submit" />
              </form>

, когда я выполняю поиск по нему, я получаю URL-адрес, подобный этому

http://www.mysite.com/search.php?tag=query

, но я использую правило перезаписи в моемсайт и у меня есть URL-адрес, как это

http://www.mysite.com/search/query

Это показывает те же результаты

, что я хочу, когда пользовательский поиск вместо показа этого URL

http://www.mysite.com/search.php?tag=query

это должнопоказать мой URL правила перезаписи

http://www.mysite.com/search/query

Как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 06 декабря 2011

Я бы переопределил событие onSubmit () формы и перенаправил себя с помощью javascript, изменив window.location на понравившийся вам URL (просто конкататируйте значение запроса до конца)

вот быстрый и очень грязный пример:

<script type="text/javascript">

    function form_submitted()
    {
        var new_url = "http://www.mysite.com/search/" + encodeURIComponent(document.getElementById('search-text').value);
        window.location = new_url;
        return false;
    }

</script>

<form id="search" onsubmit="return form_submitted()">
<input type="text" value="Search here" name="tag" id="search-text" />
<input type="image" src="/search-new.gif" alt="Search" id="search-submit" />
</form>
0 голосов
/ 07 декабря 2011

Вы можете выполнить внешнее перенаправление с помощью mod_rewrite на предварительно подтвержденный URL. См. Документацию mod_rewrite для "постоянных перенаправлений".

Поскольку для этого требуется дополнительная передача туда и обратно (сначала отправляется запрос на /search.php?tag=query, отправляется внешнее постоянное перенаправление на /search/query, затем URL-адрес /search/query выбирается браузером и только внутренне переписывается на фактический PHP сценария), я бы добавил ярлык JavaScript, как предложено в другом ответе (обратите внимание, что он по-прежнему будет работать без JavaScript).

0 голосов
/ 06 декабря 2011

Вам нужно изменить свою форму на GET / search / и добавить обработчик отправки (в JavaScript), который создает «предварительно подтвержденный» URL.

mod_rewrite переписывает внутренний URL, а не URL, который видит пользователь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...