2012-06-12 2 views
1

мне нужно переписать URL-адреса из:Есть ли способ переписать этот URL?

www.example.com/John.Connor/my-first-post/42 

к:

www.example.com/post.php?postid=42&userid=19 

Таблицы:

USER: 
id, name, surname, email, password 

POST: 
id, title, post, userid 

Есть ли способ сделать это?

+0

Вы уверены, что не хотите, чтобы все было наоборот? –

+0

извините, да, я хочу, чтобы все было наоборот. Я просто прав: D – xRobot

ответ

1

Ну mod_rewrite не может запросить вашу базу данных, поэтому он не может быть полностью выполнен через .htaccess. Что вы можете сделать, чтобы иметь это правило в .htaccess:

Включить mod_rewrite и .htaccess через httpd.conf, а затем поместить этот код в .htaccess под DOCUMENT_ROOT каталоге:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^[^/]+/[^/]+/([0-9]+)/?$ post.php?postid=42 [L,QSA] 

Тогда внутри вашего post.php сценария есть код например:

$postid = mysql_real_escape_string($_GET['postid']); 
$userid = mysql_real_escape_string($_GET['userid']); 

if (empty($userid)) { 
    $userid = mysql_result(mysql_query("SELECT userid FROM POST WHERE id=$posid"), 
       0, "userid"); 
    // now redirect by appending &userid=49 in the current URL 
    header("Location: " . $_SERVER["REQUEST_URI"] . "&userid=" . $userid); 
    exit; 
} 
+0

Отличное решение, но если htaccess не может запрашивать базы данных, то как сайты, такие как pinterest, имеют такие URL-адреса: http://pinterest.com/robingood/wow-collection/ (robingood - это имя пользователя и wow- коллекция - это категория)? – xRobot

+0

@xRobot: Даже SO имеет такую ​​схему URL. например этот вопрос имеет этот URL: 'http: // stackoverflow.com/ questions/10992072/is-there-a-way-to-rewrite-this-url/10996636' Теперь попробуйте ввести этот короткий URL-адрес для того же вопроса' http:// stackoverflow.com/questions/10992072', и вы заметите, что он перенаправлен на прежний URL. Причина в том, что он вытаскивает заголовок вопроса из базы данных и добавляет его в более короткий URL-адрес, чтобы сделать его дружественным к SEO. – anubhava

+0

В этом случае есть идентификатор вопроса (10992072), но в случае pinterest нет. – xRobot