Папка с Get value - PullRequest
       27

Папка с Get value

2 голосов
/ 03 марта 2012

Может ли кто-нибудь с большим опытом, чем я, объяснить, как работает ссылка (например):

http://www.facebook.com/zuck  

Я думаю, что то же самое из этого

http://www.facebook.com/profile.php?id=4

Я представляю, что "zuck" - это строка типа GET, но я не понимаю, как я могу сделать то же самое.

Большое спасибо

Ответы [ 3 ]

2 голосов
/ 03 марта 2012

Вы можете легко это сделать с помощью модуля Apache mod_rewrite : это механизм, который позволяет вам указать, какой контент будет обслуживать входящий запрос.Например, вы можете создать правило в своем файле .htaccess, например так:

RewriteRule (.*) index.php?req=$1

, которое будет перенаправлять каждый входящий запрос в центральный index.php, где вы сможете проанализировать запрошенный URI (вВ вашем примере переменная req будет содержать значение «zuck»), тогда вы сможете обслуживать некоторый контент на основе этой информации (например, вы можете найти «zuck» в базе данных, содержащей профили пользователей, получить идентификатор, связанный с «zuck»).значение, а затем показать профиль для пользователя # 24).

По крайней мере, это основная идея.Обычно это называется «URL prettifying», «дружественные URL» или «SEO URL», ищите эти термины, и вы найдете множество ресурсов.

2 голосов
/ 03 марта 2012

.htaccess файл:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /profile.php?id=$1 [L]
1 голос
/ 03 марта 2012

На самом деле, я не уверен в этом, но, кстати, я вижу, что Facebook, вероятно, использует оба способа, чтобы добраться до профиля

Я быстро .htaccess, чтобы убедиться, что все запросы поступают на одной странице.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /profile.php?input=$1 [L]

Теперь в файле profile.php необходимо выполнить простую проверку, например

$input = $_GET['input'];

if(is_string($input)) {
 // then retrieve profile id, based on the string
}
//now either way you have an unique identifier at last
//
//
// use your logic further more
.
...