Красивый URL htaccess

1

У меня есть следующий 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]
  • 0
    RewriteRule ^ (. *) $? Page = $ 1 & Section = $ 2 - регулярное выражение может быть не на 100% правильным, это даст вам представление
  • 0
    @ moh.ABK ваш файл .htaccess
Теги:
.htaccess
mod-rewrite

3 ответа

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

Попробуйте это в 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]
  • 0
    это возвращает меня на страницу, но ничего не загружается, например, CSS, JS и т. д.
  • 0
    Вам нужно добавить <base href = "/"> между <head> и </ head> вашей веб-страницы, чтобы исправить базу uri вашего заголовка, чтобы js и css могли работать.
Показать ещё 1 комментарий
0

Нашел что-то для вас - мастер поможет вам сделать ваш URL идеальным http://www.generateit.net/mod-rewrite/index.php

0

Добавьте эту строку в файл.htaccess. Это займет переменные и сделать приятно и красиво:

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)\.html$ /search-menu?r_id=$1&name=$2 [L]

Имейте в виду, что это является основным, и вам нужно будет изменить его на свои адреса, но это просто даст вам представление о том, что вам нужно сделать.

Ещё вопросы

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