Apache - переписать URL [закрыт]

0

У меня простая форма в html

<form class="form-search" method="get" action="search.php">
  <input name="what" type="text" class="input-xlarge search-query" placeholder="what">
  <input name="where" type="text" class="input-xlarge search-query" placeholder="where">
  <button type="submit" class="btn btn-primary search">search</button>
</form>

Когда я нажимаю кнопку, URL-адрес похож на http://example.com/search.php?what=foo&where=bar, все в порядке.

Мне нужна такая же функциональность, но я хочу переписать URL-адрес на http://example.com/foo/bar/

Можно ли достичь этого с помощью apache rewrite?

Теги:
get
rewrite

3 ответа

0
Лучший ответ

Вам нужно будет соответствовать запросу, чтобы браузер загрузил /foo/bar/ URL-адрес, а затем внутренне переписал его обратно в строку запроса:

RewriteEngine On

RewriteCond %{THE_REQUEST} GET\ /+search\.php\?what=([^&]+)&where=([^&\ ]+)
RewriteRule ^ /%1/%2/? [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([^/]+)/([^/]+)/?$ /search.php?what=$1&where=$2 [L,QSA]
0

http://corz.org/serv/tricks/htaccess2.php?page=1 имеет хорошие инструкции для того, что вы хотите сделать.

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^/([^/]+)/([^/])+ /search.php?what=$1&where=$2 [NC]

должен сделать трюк.

0

Я думаю, что это должно работать

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]+)/([^/]+) /search.php?what=$1&where=$2 [L]

с этим URL-адресом http://example.com/foo/bar/, если нет папки с именем foo и файла или каталога, который соответствует имени файла, он перенаправляет запрос http://example.com/search.php? what = foo & where = bar result.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню