2014-01-02 3 views
1

Я довольно новыми для .htaccess и есть вопрос ..Как переписать с .htaccess

Как бы переписать

http://example.com/forums/view.php?v=Topic%20Name&a=64 в http://example.com/forums/view/Topic-Name/64?

, как было сказано выше, я новичок в этом ..

Кроме того, как бы я заменить - с  , сохраняя при этом нормальные черточки?

Пример:Hi There-Bye! затем конвертировать в Hi-There-Bye!

который затем преобразовать обратно в Hi There-Bye! с php and .htaccess?

+0

В Интернете уже много материала об этом. Можете ли вы наметить, что вы нашли и попробовали? – halfer

+0

1. Посмотрите на сотни уже ответивших на вопросы [здесь] (http://stackoverflow.com/search?q=htaccess+url+rewrite). 2. У вас есть несколько записей для одного и того же идентификатора, поэтому вы знаете, какой из них является URL-адресом и который является заголовком. Вы не меняете их. – Peon

+0

Вы не смогли преобразовать его обратно в это, так как вы не знаете, был ли '-'' -' первоначально или ''. Что вы можете сделать, так это сохранить это имя, соответствующее URL-адресу, с вашими данными темы и выполнить поиск по этому вопросу. – Wrikken

ответ

1

Первый вопрос довольно простой. Вам нужно внешнее перенаправление с «уродливого» (но работающего) URL-адреса на URL-адрес seo и внутреннюю переписку с URL-адреса seo на «уродливый» URL-адрес. Все они могут быть записаны в следующем формате:

#External redirect 
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /forums/view\.php\?v=([^&]+)&a=(.+)\ HTTP 
RewriteRule^/forums/view/%1/%2 [R,L] 
#Change above [R,L] to [R=301,L] after testing all rules work as expected 

#Internal rewrite 
RewriteRule ^forums/view/([^/]+)/([^/]+)/?$ /forums/view.php?v=$1&a=$2 [L] 

Вторая вещь невозможна. Нельзя различать тире между Hi и There и тире между There и Bye. Я бы сказал: не беспокойтесь. Это seo-url. Если вы хотите иметь причудливый seo-url, вам придется изменить свою базу данных, чтобы содержать эти причудливые seo-urls.

+0

Спасибо , что отлично поработало. Одна вещь. Что, если пользователь ввел косую черту в конце URL-адреса? Как я мог бы обойти это? –

+0

Вот что делает '/? $' :-) '/?' Совпадает, если '/' отображается ровно 0 или 1 раз. '$' - это конец строки. – Sumurai8

+0

@ Sumurari8 http://example.com/forums/view/Test%20Topic/5 работает, но http://example.com/forums/view/Test%20Topic/5/ нет. –

0

Перепишите нижеприведенный метод.

RewriteRule ^example/(.*)\.html$ example/test.php?param=$1 
+0

Я не хочу расширения файлов, и у меня есть несколько элементов запроса. –

+0

, затем удалите часть .html, и вы можете запросить несколько элементов тоже :) – Amit

+0

для нескольких элементов запроса используйте этот RewriteRule /example/(.*)/(.*)$ /example.php?parameter1=$1¶meter2=$2 – Amit

0
RewriteRule ^forums/view/([^/]*)/([^/]*)$ /forums/view.php?v=$1&a=$2 [L] 
Смежные вопросы