Я видел URL-адреса, подобные этому, и мне просто интересно, как они используются.PHP: URL-формат www.mysite.com/users/33
До сих пор я использую www.mysite.com/users/?id=33
Как я могу использовать другой формат?
Я видел URL-адреса, подобные этому, и мне просто интересно, как они используются.PHP: URL-формат www.mysite.com/users/33
До сих пор я использую www.mysite.com/users/?id=33
Как я могу использовать другой формат?
ответ Пола Peelan является правильным, если немного многословным :-) Поместите это в файл .htaccess в корневом каталоге вашего сайта:
RewriteEngine On
RewriteRule ^users/(\d+)$ /users/?id=$1
Это будет match/users/33,/users/1,/users/12345 и т. д. и перенаправлять на/users /? id = 12345.
Для этого требуется, чтобы в конфигурации вашего Apache включен двигатель mod_rewrite
. См. the mod_rewrite docs для получения дополнительной информации.
Вам придется использовать «mod-rewrite» и, например, файл .htaccess. Затем Apache отправит URL-адреса в соответствии с вашими настройками в файле .htaccess.
.:
например<IfModule mod_rewrite.c>
RewriteEngine on
# If your site can be accessed both with and without the 'www.' prefix, you
# can use one of the following settings to redirect users to your preferred
# URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
#
# To redirect all users to access the site WITH the 'www.' prefix,
# (http://example.com/... will be redirected to http://www.example.com/...)
# adapt and uncomment the following:
# RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
# RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
#
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment and adapt the following:
# RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
# RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
# RewriteBase /drupal
#
# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
# RewriteBase/
# Rewrite URLs of the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
С уважением, Пол
Кстати, пример выше взят из Drupal! –
спасибо, Паул, нашел хорошую статью на http://www.phpriot.com/articles/search-engine-urls/2 – iamjonesy
Отлично! Рад, что смог помочь! /Paul –
Я знаю, что вы уже выбрали ответ на этот вопрос, но это очень полезно знать. Фреймворк PHP Codeigniter позволяет использовать по умолчанию такие URL-адреса. Мне было намного проще переписывать URL таким образом. Дополнительную информацию об этом, включая образцы кода, можно найти по адресу http://codeigniter.com/user_guide/general/urls.html
Спасибо, богатый, только то, что мне нужно! – iamjonesy
Мне кажется, мне нужно включить RewriteEngine в httpd.conf, но я не уверен, где его найти. Я использую Mac кстати. спасибо – iamjonesy
Не уверен, где он находится на Mac, но нужно что-то вроде 'LoadModule rewrite_module/usr/lib/apache2/modules/mod_rewrite.so'. Возможно, вам нужно будет включить модуль Rewrite специально - если вы застряли, http://serverfault.com/ может быть лучше, если вы спросите о настройках сервера config :-) – richsage