Перезапись URL - строка запроса - PullRequest
2 голосов
/ 09 апреля 2011

У меня есть новостной (блог) сайт, который возвращает URL в следующем формате, когда выбраны отдельные сообщения:

website.net/sitenews.php?q=posts/view/postname/12

Я пытаюсь переписать URL так, чтобы он гласил:

website.net/sitenews.php/posts/view/postname/12

или любым другим способом, где ?q= удаляется с целью удаления ?, чтобы URL-адрес мог быть доступен с помощью кнопки «Нравится» в Facebook, так как URL-адрес в Facebook не обрабатывает строки запроса.

В файле htdocs .htaccess в корневом каталоге я пробовал следующее:

Options +FollowSymLinks 

RewriteEngine on

RewriteCond %{QUERY_STRING} q=  

RewriteRule (.*) website.net/sitenews.php/$1? [R=301]

Это успешно удаляет q=?, однако остальная часть строки (posts/view/postname/12) не возвращается, и теперь URL выглядит следующим образом:

 website.net/sitenews.php/sitenews.php

У кого-нибудь есть предложения, чтобы помочь мне завершить этот url_rewrite?

Ответы [ 2 ]

2 голосов
/ 09 апреля 2011

Попробуйте вместо этого в вашем .htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^q=(.*)$ [NC]
RewriteRule ^(.*)$ /$1/%1? [R=301,L,NE]

R=301 will redirect with https status 301
L will make last rule
NE is for no escaping query string

%1 is capture group for query string q= (whatever comes after q=)
$1 is your REQUEST_URI
0 голосов
/ 09 апреля 2011

Если вы используете любую CMS, такую ​​как WordPress, Joomla или SE, у вас есть возможность сделать это, в противном случае вам потребуется файл .htaccess, в котором вы можете написать код, см. Ссылки

http://roshanbh.com.np/2008/03/url-rewriting-examples-htaccess.html

http://www.webmasterworld.com/forum92/2545.htm

http://www.google.com/#sclient=psy&hl=en&q=htaccess+change+the+url&aq=0p&aqi=p-p1g4&aql=&oq=htaccess+&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=c875dd2b8adea15a

...