Довольно сложный вопрос.
У меня есть несколько страниц с расширением URL: .php? Id = 1, .php? Id = 2, .php? Id = 34 и т. Д.
Теперь я попал на все эти страницы, <h3>
содержащий некоторый текст.
Этот текст я хотел бы иметь вместо расширений .php? Id = 4 (т.е.).
Я хотел бы знать, как я мог бы достичь этого. Любая помощь приветствуется! 🙂
http://i58.tinypic.com/107vudv.jpg
красный должен быть заменен зеленым, отделенным косой чертой.
Мой код .htaccess до сих пор:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ projecten-functioneel.php?args=$1 [QSA,L]
Пожалуйста, посмотрите на эту конфигурацию
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html [L]
RewriteRule ^projecten-functioneel/(.*)$ projecten-functioneel.php?title=$1 [L]
Первые четыре строки — ваши исходные настройки, единственным дополнением является флаг L в конце правила перезаписи. Это предотвратит оценку второго правила перезаписи, если первое совпадает.
Последняя строка отвечает за запрос страницы projecten-functioneel.
Как это устроено
Если URL
site.com/projecten-functioneel/some_title
запрос будет переписан в
site.com/projecten-functioneel.php?title=some_title
Тогда в вашем projecten-functioneel.php
файл, который вы должны попросить $_GET['title']
, который в этом случае будет some_title
,
Вероятно (как минимум) два изменения, которые необходимо будет внести в projecten-functioneel.php
,
1) Нужно изменить свой запрос на статьи, чтобы искать их по ключевому слову, которое находится в теге;
Например, сегодня у вас есть код, который выглядит примерно так:
$stmt = $db->prepare("SELECT * FROM articles WHERE id=?");
$stmt->execute(array($_GET['id']));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
Вам нужно будет изменить это, чтобы выглядеть примерно так:
$stmt = $db->prepare("SELECT * FROM articles WHERE title=?");
$pathinfo = explode('/', $_SERVER['PATH_INFO']);
$stmt->execute(array($pathinfo[0]));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
2) Вам нужно изменить способ написания ссылок, чтобы будущие ссылки создавались в соответствии с этим поведением.
Предполагая что-то вроде этого:
$stmt = $db->prepare("SELECT id, title FROM articles");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row) {
echo '<a href="/projecten-functioneel.php?id=', $row->id, '">', $row->title, '</a>';
}
что-то вроде:
$stmt = $db->prepare("SELECT title FROM articles");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row) {
echo '<a href="/projecten-functioneel.php/', $row->title, '">', $row->title, '</a>';
}