У меня есть следующий URL-адрес, который я хочу убрать. Любая помощь оценивается.
Из;
http://www.example.co.uk/search-menu?r_id=1&name=testname
к
http://www.abklab.co.uk/search-menu/1/testname
Я пробовал ниже, но получаю внутреннюю ошибку сервера
# external redirect from actual URL to pretty one (WEB)
RewriteCond %{THE_REQUEST} \s/+search-menu(?:\.php)?\?r_id=([^\s&]+)&name=([^\s&]+) [NC]
RewriteRule ^ /search-menu/%1/%2? [R=302,L,NE]
# internal forward from pretty URL to actual one (WEB)
RewriteRule ^search-menu/([\w-]+)/([\w-]+)/?$ search-menu.php?r_id=$1&name=%2 [L,QSA,NC]
FYI: правило ниже удаляет расширение расширения.php;
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=302,L]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]
Попробуйте это в htaccess:
RewriteEngine on
RewriteCond %{THE_REQUEST} /search-menu\?r_id=([^&]+)&name=([^\s]+) [NC]
RewriteRule ^ %1/%2? [NC,L,R]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^search-menu/([^/]+)/([^/]+)/?$ search-menu.php?r_id=$1&name=$2 [NC,L]
Нашел что-то для вас - мастер поможет вам сделать ваш URL идеальным http://www.generateit.net/mod-rewrite/index.php
Добавьте эту строку в файл.htaccess. Это займет переменные и сделать приятно и красиво:
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)\.html$ /search-menu?r_id=$1&name=$2 [L]
Имейте в виду, что это является основным, и вам нужно будет изменить его на свои адреса, но это просто даст вам представление о том, что вам нужно сделать.