Ваше исходное правило принимает любой файл, который не содержит косой черты и заканчивается символом «.html» на корневом уровне (включая файл с именем «.html») и перенаправляет запрос в файл index.php, и он берет первую часть имени файла из запроса (перед точкой) и передает его как запрос под названием «id».
RewriteRule ^([^/]*)\.html$ /index.php?id=$1 [L]
Поскольку это .htaccess вы должны принять косую черту от
Вы должны сделать это:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)\.html$ /index.php?id=$1 [L]
В самой вашей HTML в ссылках, вам нужно вызвать имя файла. HTML.
<a href='/223.html'>Some page with an id of 223</a>
Для SEO вы можете принять матч начать
RewriteRule ([^/]+)\.html$ /index.php?id=$1 [L]
Это сделало бы, чтобы вы могли ссылаться на файл, например:
/somedirectory/someseotitle/223.html
Кроме того, вы должны затем создать 301 перенаправляет из все ссылки id=$id
и заставить их перейти к намеченным целям с полным URL-адресом. Код, приведенный ниже, войдет в файл index.php
вверху до того, как будут установлены cookies
или начнется sessions
. В качестве примера того, что вы могли бы сделать ... Я только догадываться о структуре таблицы:
<?php
if ($_SERVER['REQUEST_URI']=='/index.php' && !empty($_GET['id']){
if (is_numeric($_GET['id'])){
$id = $_GET['id'];
$cquery = "select count(*) from table where id = $id";
$count = mysqli_result(mysqli_query($cquery),0);
if($count == 1){
$tquery = "select title from table where id = $id";
$result = mysqli_query($tquery);
while ($row=mysqli_fetch_array($result)){
$title = urlencode($row['title']);
$headerString = "Location: /$title/$id.html";
header("HTTP/1.1 301 Moved Permanently");
header($headerString);
}
}
}
}
?>
Прежде всего, вы уверены, что на сервере установлен mod_rewrite (при условии, что ubuntu, с терминала вы делаете 'sudo a2enmod rewrite') – dave
Заработал и перезапустил Apache. Я также пробовал это на размещенном сервере. – afro360
Эти параметры для 'RewriteRule' выглядят неверно. Вы помещаете тот, который вы поймаете первым, и тот, который вы перенаправляете ко второму. – Greg