国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

htaccess erlaubt keinen Zugriff auf Unterverzeichnisse mit Parametern
P粉785905797
P粉785905797 2024-03-30 20:05:48
0
1
610

Ich versuche, htaccess für SEO-URLs zu erstellen. Ich habe htaccess erstellt. Alle URLs funktionieren einwandfrei, au?er Unterordnern mit Parametern, sie leiten zum Site-Ordner weiter.

sitefolder ist mein Stammverzeichnis und alle meine Dateien sind dort.

Beispiel: Die URL sollte so aussehen:

http://localhost/sitefolder/subcat/39/web-hosting
  http://localhost/sitefolder/profile/1/username

In htaccess sieht es so aus:

RewriteRule ^subcat/(.*)/([a-zA-Z0-9_-]+)$ subcat.php?q=&slug= [L,NC]
 RewriteRule ^profile/(.*)/([a-zA-Z0-9_-]+)$ show_profile.php?q=&slug= [L,NC]

Der erste Parameter ist id und der zweite Parameter ist slug, aber keine dieser beiden URLs wird zur URL weitergeleitet.

Das ist mein gesamter htacces-Code:

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteRule ^contact-us contact-us.php [L,NC]
RewriteRule ^login login.php [L,NC]
RewriteRule ^register register.php [L,NC]
RewriteRule ^search search.php [L,NC]
RewriteRule ^about-us about-us.php [L,NC]
RewriteRule ^(.*)/([a-zA-Z0-9_-]+)$ detail.php?q=&slug= [L,NC]
RewriteRule ^cats categories.php [L,NC]
RewriteRule ^subcat/(.*)/([a-zA-Z0-9_-]+)$ subcat.php?q=&slug= [L,NC]
RewriteRule ^profile/(.*)/([a-zA-Z0-9_-]+)$ show_profile.php?q=&slug= [L,NC]

Auf diese Weise erhalte ich die Parameter in subcat.php und leite bei Fehlern nicht zum Index weiter, daher glaube ich nicht, dass es an PHP liegt :

if(!empty($_GET['slug']) AND !empty($_GET['q'])) {
    $slug = $_GET['slug'];
    $pid = is_numeric($_GET['q']);
    $userQuery = $handler->getPosts("SELECT * FROM categories WHERE catId = ?", [$pid])->fetchAll();
   if($userQuery) {
      foreach($userQuery as $user){
         $catid = intval($user['catId']);
         $cat_title = htmlspecialchars($user['catName']);
         $cat_seo_url = htmlspecialchars($user['cat_seo_url']);
         $cat_descriptions = htmlspecialchars($user['cat_desc']);
         $cat_keywords = htmlspecialchars($user['cat_keys']);
         $cat_created = htmlspecialchars($user['cat_created_at']);
         $cat_img = htmlspecialchars($user['cat_img']);
      }

   }else{
      echo "Something went wrong while execute query.";
      exit();
   }
}else{
   echo "Something went wrong with parameters";
   exit();
}

P粉785905797
P粉785905797

Antworte allen(1)
P粉450079266

如果 subcat.php 被調(diào)用(正如您在評論中所述),那么 .htaccess 不是問題。但是您發(fā)布的任何代碼中都沒有重定向到 index.php (或任何類型的重定向)。

但是,此行似乎存在運行時錯誤:

$pid = is_numeric($_GET['q']);

is_numeric() 只是測試參數(shù)是否為數(shù)字并返回布爾值,它不會返回該變量的數(shù)字值,這正是您所期望的。因此,無論 q 的值如何,您的 SELECT 總是會失?。ɑ蚍祷氐谝豁棧?。

您可能需要這樣的東西來檢索指定 URL 參數(shù)的實際值:

$pid = is_numeric($_GET['q']) ? (int)$_GET['q'] : 0;

但是您需要首先驗證這些 URL 參數(shù)(即 $_GET 變量)是否已傳遞,否則您的腳本將發(fā)出 E_NOTICE 消息。


更新:

與您的 RewriteRule 指令存在沖突:

當(dāng)您請求http://localhost/sitefolder/subcat/38/web-design時,它將被此處的第一條規(guī)則捕獲,該規(guī)則將請求重寫為detail.php? q=subcat/39&slug=web-design,而不是您期望的 subcat.php 。這可能失敗,因為q=subcat/39可能無效(我猜是觸發(fā)了到/sitefolder/的重定向)?

您需要更改這些規(guī)則的順序和/或使正則表達(dá)式更加具體以避免沖突。例如。如果 q 應(yīng)該是數(shù)字 ID,則僅匹配數(shù)字值 (\d+),而不是字面上的 任何內(nèi)容 (.*),這就是您當(dāng)前正在匹配的內(nèi)容。

您還應(yīng)該在正則表達(dá)式中包含字符串結(jié)尾錨點,否則這些規(guī)則也將匹配重寫的 URL 并導(dǎo)致不必要的循環(huán)。例如:

RewriteRule ^contact-us$ contact-us.php [L,NC]

我還會質(zhì)疑此處使用 NC 標(biāo)志,因為它可能會通過允許 contact-usCONTACT-US (以及之間的所有內(nèi)容)訪問相同的資源。

摘要

換句話說,你的規(guī)則應(yīng)該更像這樣:

RewriteRule ^contact-us$ contact-us.php [L]
RewriteRule ^login$ login.php [L]
RewriteRule ^register$ register.php [L]
RewriteRule ^search$ search.php [L]
RewriteRule ^about-us$ about-us.php [L]
RewriteRule ^cats$ categories.php [L]
RewriteRule ^(\d+)/([\w-]+)$ detail.php?q=$1&slug=$2 [L]
RewriteRule ^subcat/(\d+)/([\w-]+)$ subcat.php?q=$1&slug=$2 [L]
RewriteRule ^profile/(\d+)/([\w-]+)$ show_profile.php?q=$1&slug=$2 [L]

\w[a-zA-Z0-9_] 的簡寫字符類。)

通過使正則表達(dá)式更加具體,您可以避免沖突。這些指令從上到下執(zhí)行。第一個匹配的規(guī)則獲勝。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage