Извините, если я повторяю вопрос, но я не могу решить это, глядя на другие ответы 🙁
У меня есть FORM с действием GET:
<form action="tag" role="form" method="get">
Который содержит вход для поиска с именем «q»,
Я хочу, чтобы при отправке формы URL, отображаемый на панели навигации:
http://localhost/web/tag/dress
Вместо
http://localhost/web/tag?q=dress
В моем .htaccess у меня есть
RewriteRule ^tag/([0-9a-z]+)/?$ index.php?tag=$1 [L]
Что отлично работает, когда я напрямую обращаюсь к:
http://localhost/web/tag/dress
Все, что я хочу, это форма, которая приведет меня к этому чистому URL-адресу вместо того, чтобы использовать параметр? Q = в панели навигации.
Какие-либо предложения?
Упрощенная версия моего .htaccess:
ErrorDocument 404 http://localhost/web/#404 RewriteEngine on RewriteRule ^index.html index.php [L] ###TAG RewriteRule ^tag/([0-9a-z]+)/?$ index.php?seccion=home&tag=$1[L] ###USER PROFILE RewriteRule ^([0-9a-z]+)/?$ index.php?seccion=profile&user=$1 [L]
Интересно, если я вынужден сделать это с помощью javascript?
Что-то вроде:
$('.search-form').submit(function (event) { var tag = $('#q').val(); window.location='tag/'+tag; return false; });
Добавьте это дополнительное правило перед своим существующим правилом:
# external redirect from actual URL to pretty one RewriteCond %{THE_REQUEST} \s/+web/tag\?q=([^\s&]+) [NC] RewriteRule ^ /web/tag/%1? [R=302,L]
UPDATE: ваш полный .htaccess: ПРИМЕЧАНИЕ: «/» отсутствует. Теперь это должно сработать.
ErrorDocument 404 web/#404 RewriteEngine on RewriteBase /web/ # external redirect from actual URL to pretty one RewriteCond %{THE_REQUEST} /tag/\?q=([^\s&]+) [NC] RewriteRule ^ tag/%1? [R=302,L] RewriteRule ^index\.html$ index.php [L,NC] ###TAG RewriteRule ^tag/([0-9a-z]+)/?$ index.php?seccion=home&tag=$1 [L,NC,QSA] ###USER PROFILE RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9a-z]+)/?$ index.php?seccion=profile&user=$1 [L,NC,QSA]