У мене є сайт новин (блог), який повертає URL-адреси в наступному форматі, коли вибрано окремі публікації:
website.net/sitenews.php?q=posts/view/postname/12
Я прагну переписати URL-адресу, щоб вона читала:
website.net/sitenews.php/posts/view/postname/12
або будь-яким іншим способом, де ?q=
видаляється з метою видалення ?
таким чином, щоб URL можна було отримати за допомогою кнопки, подібної до facebook, оскільки URL-адреса 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 для відповіді № 1Спробуйте замість цього .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 для відповіді № 2
Якщо ви використовуєте будь-яку CMS, наприклад wordpress, або joomla або SE, тоді у вас є можливість зробити це ще, для чого потрібно .htaccess
файл, де можна написати код, зверніться до цих посилань
http://roshanbh.com.np/2008/03/url-rewriting-examples-htaccess.html
http://www.webmasterworld.com/forum92/2545.htm