.htaccess — URL заменяет расширение .php? id = 1 для & lt; h3 & gt; значение тега из моего контента

Довольно сложный вопрос.

У меня есть несколько страниц с расширением 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]

0

Решение

Пожалуйста, посмотрите на эту конфигурацию

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,

1

Другие решения

Вероятно (как минимум) два изменения, которые необходимо будет внести в 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>';
}
0

По вопросам рекламы [email protected]