страница слаг с rewriterule в htaccess

Я использую Rewrite Rule в htaccess, чтобы получить данные страницы по slug.

Я делаю это вручную, добавляя строки в .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !www\.example\.co\.il$ [NC]
RewriteRule ^(.*)$ http://www.example.co.il/$1 [L,R=301]
ErrorDocument 404 /404.php
RewriteRule ^עמוד-מסוים$ /page.php?id=1 [L]
RewriteRule ^דוגמא-לעמוד$ /page.php?id=2 [L]
RewriteRule ^דוגמא-נוספת$ /page.php?id=3 [L]
RewriteRule ^טקסט-כלשהו$ /page.php?id=4 [L]
RewriteRule ^צרו-קשר$ /contact.php [L]
RewriteRule ^blog$ /blog.php [L]

Это хорошо работает, но мне нужно каждый раз добавлять новую строку .htaccess.

моя таблица БД содержит Id и Slug (и другую информацию)
и мой page.php использует $ _GET [‘id’] и затем выбирает другие данные из БД по этому идентификатору.

Я попробовал что-то вроде этого:

.Htaccess:

RewriteRule ^page/([^/]*)$ /page.php?id=$1 [L]

page.php:

$id=$_GET['id'];

if(is_int($id)==false){ // if slug was enterd
$result=$mysqli->query("SELECT `id` FROM `pages` WHERE  `slug`='$id' limit 1");
while($row=mysqli_fetch_assoc($result)){
$id=$row['id'];
}//query
}

Но URL выглядит не так, как я хочу (добавление / page / к URL)

Я попробовал это также:

.Htaccess:

RewriteRule ^/([^/]*)$ /page.php?id=$1 [L]

но это создает проблемы с другими URL на моем сайте (которые не связаны с page.php)

Как я могу заставить его работать без добавления строки htaccess каждый раз?

РЕДАКТИРОВАТЬ:
когда я пытаюсь это .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !www\.example\.co\.il$ [NC]
RewriteRule ^(.*)$ http://www.example.co.il/$1 [L,R=301]
ErrorDocument 404 /404.php
RewriteRule ^/?([^/]+)$ /page.php?id=$1 [L]
RewriteRule ^צרו-קשר$ /contact.php [L]
RewriteRule ^blog$ /blog.php [L]

Я получаю сообщение об ошибке на всех страницах. Если я перемещаюсь вверх по RewriteRule ^ /? ([^ /] +) $ /Page.php?id=$1 [L], то будет работать только файл page.php (блог и контакт не будут работать) работать), а также не WWW URL-адреса не будут работать хорошо.

0

Решение

Вы можете попробовать добавить некоторые условия, например:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([^/]+)$ /page.php?id=$1 [L]

отфильтровать все существующие файлы и каталоги.

Кроме того, вы можете рассмотреть очистить ваш параметр $ id, прежде чем вставить его в запрос

0

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

Нашел душу. Это работает идеально:

ErrorDocument 404 /404.php
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteRule ^צרו-קשר$ /contact.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([^/]+)$ /page.php?id=$1 [L]
0

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