Как 301 перенаправить доменное имя другому с помощью .htaccess

Я пытаюсь отредактировать свой htaccess.

Все URL-адреса работают нормально на сервере, но та же настройка htaccess перенаправляет категорию / cat_name / url на страницу 404 без каких-либо ошибок. все остальные URL-адреса работают нормально, принимают URL-адрес категории.

Я настраиваю свои ссылки без идентификатора и ищу URL-адреса с помощью seo_url, который добавлен в базу данных, я проверил все URL-адреса в базе данных один за другим, они выглядят нормально. Похоже, проблема в моем htaccess, я пробовал несколько опечаток в регулярных выражениях и [L,QSA] переменные тоже, но ничего не меняли. Я использую wamp-сервер и версию php 7.3.0 на localhost, mod_rewrite включен.

Я читал те же вопросы на сайтах сообщества и искал в Google, прежде чем задавать этот вопрос, и никто не решил мою проблему.

Мой .htaccess находится в корне сайта

URL-адрес в браузере выглядит нормально: http: // localhost / site / category / services /

Мой пример ссылки на php:

href='category/<?php echo $row['seo_url'];?>/' title='<?php echo $row['cat_name'];?>'> 

Мой URL-адрес htaccess:

RewriteRule ^category/([a-zA-Z0-9_-]+)/$ categories.php?q=$1 [L,NC] 

Мои коды в моих категориях.php

if(isset($_GET['q'])){ $seourl = htmlspecialchars($_GET['q']); $stmt = $pdo->prepare('SELECT * FROM categories WHERE seo_url=:seo_url'); $stmt->execute(array(':seo_url'=>$seourl)); if($stmt->rowCount() > 0){ $row = $stmt->fetch(PDO::FETCH_ASSOC); $ctid = intval($row['cat_id']); $ctname = htmlspecialchars($row['cat_name']); $ctseo_url = htmlspecialchars($row['seo_url']); $descriptions = htmlspecialchars($row['descriptions']); $keywords = htmlspecialchars($row['keywords']); $created = htmlspecialchars($row['created']); $img = htmlspecialchars($row['img']); }else{ $_SESSION['message'] = 'Category not exist'; header('location: ../error.php'); exit(); } }else{ $_SESSION['message'] = 'Category not exist'; header('location: ../error.php'); exit(); } 

Как вы можете видеть в коде, я ищу URL с помощью seo_url который добавляется в базу данных, если что-то не так с URL-адресом, он должен перенаправить меня на error.php, но его перенаправление на страницу 404 без ошибки.

все ссылки htaccess:

Options +FollowSymLinks RewriteEngine On RewriteRule ^home index.php [L,NC] RewriteRule ^([a-zA-Z0-9_-]+)/$ detail.php?p=$1 [L,NC] RewriteRule ^category/([a-zA-Z0-9_-]+)/$ categories.php?q=$1 [L,NC] RewriteRule ^contact/$ contact.php [L,NC] RewriteRule ^forgot/$ hml.php [L,NC] RewriteRule ^search/$ search.php [L,NC] RewriteCond %{QUERY_STRING} ^q=(.*)$ RewriteRule ^services/$ keywords.php?q=%1 [L,NC] RewriteRule ^kariyer-basvuru/ ik.php [L,NC] RewriteRule ^feed/$ rss.php [L,NC] RewriteRule ^cat-feed/$ feed.php [L,NC] RewriteRule ^sitemap.xml$ sitemap.php [L,NC] RewriteRule ^user/$ login.php [L,NC] RewriteRule ^change-password/$ resetpass.php [L,NC] RewriteRule ^Upanel/page/(.*)$ Upanel/?page=$1 [L,NC] RewriteRule ^Upanel/page_sale/(.*)/$ Upanel/account.php?page_sale=$1 [L,NC] RewriteRule ^Upanel/del-ilan/(.*)/$ Upanel/delil.php?id=$1 [L,NC] RewriteRule ^Upanel/Store-edit/(.*)/$ Upanel/Sedit.php?store_id=$1 [L,NC] RewriteRule ^Upanel/del-store/(.*)/$ Upanel/Sdel.php?store_id=$1 [L,NC] RewriteRule ^Upanel/del-comment/(.*)/$ Upanel/Cdel.php?id=$1 [L,NC] RewriteRule ^Upanel/opens/$ Upanel/opens.php [L,NC] RewriteRule ^Upanel/editadds/(.*)/$ Upanel/Pedit.php?id=$1 [L,NC] RewriteRule ^Upanel/ilanv/$ Upanel/ilanv.php [L,NC] RewriteRule ^Upanel/profil-duzenle/(.*)/$ Upanel/profile.php?id=$1 [L,NC] RewriteRule ^Upanel/$ Upanel/index.php [L,NC] RewriteRule ^stores/(.*)/([a-zA-Z0-9_-]+)$ store.php?s=$1 [L,NC] RewriteRule ^stores/$ isletmeler.php [L,NC] ErrorDocument 404 404.shtml 

  • куда в файловой системе твой .htaccess файл?
  • 1 Ваш .htaccess выглядит нормально. Ты уверен categories.php не вызывается, просто без параметра URL? Вы не видите перенаправления в браузере? (Если все это находится в корне документа на действующем сайте, тогда перенаправление вроде ../error.php может показаться проблемой на действующем сайте - если только вы не компенсируете base тег?)
  • 1 Попробуйте добавить Options -MultiViews в верхней части вашего .htaccess файл.
  • 1 Включите вашу файловую структуру. У тебя есть другие .htaccess файлы (в подкаталогах)?
  • 1 Спасибо за ваши усилия, братан, он отлично работает, я добавил решение на вопрос. еще раз спасибо, я не смог бы решить проблему без вашего совета. Я удивлен, как он отлично работает на сервере, но не работает локально. еще раз спасибо

Я заставил это работать благодаря добавлению решения, если оно кому-то нужно: я добавил MultiViews под FollowSymLinks это не работает на вершине .htaccess:

Options +FollowSymLinks Options -MultiViews RewriteEngine On 

Я изменил поисковый запрос q к c, это не должно иметь значения, но это так, я не понимаю, почему кто-то со знаниями может объяснить beter.lol.

categories.php?c=$1 

Для вас трудились: Charles Robertson | Хотите связаться с нами?