2010-06-09 3 views
1

Я видел URL-адреса, подобные этому, и мне просто интересно, как они используются.PHP: URL-формат www.mysite.com/users/33

До сих пор я использую www.mysite.com/users/?id=33

Как я могу использовать другой формат?

ответ

3

ответ Пола 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 для получения дополнительной информации.

+0

Спасибо, богатый, только то, что мне нужно! – iamjonesy

+0

Мне кажется, мне нужно включить RewriteEngine в httpd.conf, но я не уверен, где его найти. Я использую Mac кстати. спасибо – iamjonesy

+0

Не уверен, где он находится на Mac, но нужно что-то вроде 'LoadModule rewrite_module/usr/lib/apache2/modules/mod_rewrite.so'. Возможно, вам нужно будет включить модуль Rewrite специально - если вы застряли, http://serverfault.com/ может быть лучше, если вы спросите о настройках сервера config :-) – richsage

2

Вам придется использовать «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> 

С уважением, Пол

+0

Кстати, пример выше взят из Drupal! –

+0

спасибо, Паул, нашел хорошую статью на http://www.phpriot.com/articles/search-engine-urls/2 – iamjonesy

+0

Отлично! Рад, что смог помочь! /Paul –

0

Я знаю, что вы уже выбрали ответ на этот вопрос, но это очень полезно знать. Фреймворк PHP Codeigniter позволяет использовать по умолчанию такие URL-адреса. Мне было намного проще переписывать URL таким образом. Дополнительную информацию об этом, включая образцы кода, можно найти по адресу http://codeigniter.com/user_guide/general/urls.html