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
私は誰かがそれを必要とするならソリューションを追加することでそれを機能させました:MultiViews
の下にFollowSymLinks
を追加しました.htaccess
の上では機能しません:
Options +FollowSymLinks
Options -MultiViews
RewriteEngine On
検索語をq
からc
に変更しましたが、違いはないはずですが、違いがあります。知識のある人がbeter.lolを説明できる理由がわかりません。
categories.php?c=$1