web-dev-qa-db-ja.com

ローカルホストの404ページにリダイレクトするhtaccessカテゴリのseo url

Htaccessを編集しようとしています。

すべてのURLはサーバー上で問題なく機能しますが、同じhtaccessセットアップがcategory/cat_name/urlをエラーなしで404ページにリダイレクトします。正常に動作する他のすべてのURLは、カテゴリURLを受け入れます。

IDなしでリンクを設定し、seo_urlを使用して検索URLをデータベースに追加しました。データベース内のすべてのURLを1つずつチェックし、見た目は問題ありません。 htaccessに問題があるようです。いくつかの正規表現のタイプミスと[L,QSA]変数も試しましたが、何も変更していません。ローカルホストでwampサーバーとphpバージョン7.3.0を使用しています。mod_rewriteが有効になっています。

コミュニティサイトで同じ質問を読んだり、この質問をする前にGoogleで検索したりしても、問題は解決しませんでした。

私の.htaccessはサイトのルートにあります

ブラウザのURLは正常に見えます: http:// localhost/site/category/services /

私のphpリンクの例:

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

私のhtaccessのURL:

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

私のcategorys.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();
    }

コードでわかるように、データベースに追加されたseo_urlで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
1
ismail tunahan

私は誰かがそれを必要とするならソリューションを追加することでそれを機能させました:MultiViewsの下にFollowSymLinksを追加しました.htaccessの上では機能しません:

Options +FollowSymLinks
Options -MultiViews
RewriteEngine On

検索語をqからcに変更しましたが、違いはないはずですが、違いがあります。知識のある人がbeter.lolを説明できる理由がわかりません。

categories.php?c=$1
1
ismail tunahan