2017-09-22 1 views
2

S'il vous plaît, j'ai besoin de votre aide pour cela. J'ai lutté avec htaccess pendant un moment maintenant. J'ai une page d'index avec des liens vers beedy.php qui doit passer certains paramètres commeRègle de réécriture htaccess indiquant l'erreur

<a href=”beedy.php?user=1”>Link 1</a> 

mais je ne veux pas montrer aux utilisateurs si je l'ai écrit comme ceci Link 1 la valeur de l'utilisateur est 1 ici Qui a bien fonctionné. Mais sur la page beedy.php j'ai un autre lien qui devrait m'amener à la page de nous. Cependant, lorsque je clique sur le lien sa page d'affichage n'est pas trouvée (l'URL demandée/mvc/bd/bolade/1/seeOtherLink/About/n'a pas été trouvée sur ce serveur.) J'ai cherché google mais aucun n'était assez explicite.

Mon projet est structuré de cette façon. Mvc -> BD-> Le mvc est le dossier parent du projet tout en BD est où j'ai d'autres fichiers que je travaille sur

La page index.php est comme suit

<html> 
<head> <title>Hey</title></head> 
<body> 
<h1 > THIS IS HOME PAGE </h1> 
<a href="bolade/1/"> Link 1 </a> 
<br /> 
<a href="bolade/2/">Link 2</a> 

</body> 
</html> 

Je mon fichier .htaccess structuré comme cette page

<IfModule mod_rewrite.c> 
RewriteEngine On  
#RewriteBase/

#Rewrite beedy URLs 
# Input: user/NAME/ 
# Output: beedy.php?id=userId 
RewriteRule ^bolade/(\w+)/?$ beedy.php?user=$1 [L] 

#this should take me to about page, or any page that starts with seeOtherLink/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^seeOtherLink /(\w+)$ $1.php  

</IfModule> 

Beedy.php se présente comme suit

<html> 
<head><title>Hey Beedy</title></head> 
<body> 
<a href="seeOtherLink/About/"> Go to About Us</a> 
<br /> 
<a href="seeOtherLink/Contact/"> Go to Contact Us</a> 
<br /> 

<?php 
$id = $_GET['user']; 
switch($id){ 
case 1: 
echo "This is the First value"; 
break; 
case 2: 
echo "This is the Second value"; 
break; 
} 
?> 

</body> 
</html> 
+0

Essayez de supprimer les espaces dans vos URLs –

+0

J'ai fait mais toujours le même résultat –

Répondre

1

Dans la page Beedy.php, l'URL que vous avez entré le bouton est: seeOtherLink/A propos/ et que vous utilisez .htaccass pour rendre l'utilisateur URL conviviale. Donc, la page que vous êtes sur le lien suivant: bolade/1/. Donc, lorsque vous cliquez sur un lien sur cette page, il sera simplement ajouté à l'URL actuelle, donc la nouvelle URL sera: bolade/1/ + seeOtherLink/About/ = bolade/1/voirOtherLink/À propos/ qui n'est pas une page, ni un chemin. Donc, le serveur vous donnera une erreur.

Vous devez changer l'URL: seeOtherLink/A propos/ à: http://website/seeOtherLink/About/ et ofcourse, vous devez également ajouter à votre fichier .htaccess .

Espérons que cela vous aidera


mis à jour

Alors que je comprends est que tous vos fichiers se trouve sous le dossier bd. index.php ont 2 liens que les deux points au beedy.php, puis beedy.php ont 2 liens qui pointe vers about.php et contact.php

Ainsi, votre.htaccess devrait être similaire à la suivante:

Options +FollowSymLinks 
Options All -Indexes 
RewriteEngine On 
# ------------------------------------------- 

RewriteRule ^home      index.php  [L,NC] 
RewriteRule ^About      about.php  [L,NC] 
RewriteRule ^Contact      contact.php  [L,NC] 
RewriteRule ^bolade/([a-zA-Z0-9-]+)$  beedy.php?user=$1&%{QUERY_STRING} [L,NC] 
RewriteRule ^bolade      beedy.php  [L,NC] 

# ------------------------------------------- 
RewriteCond %{REQUEST_URI} !^/(.*) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 

ErrorDocument 404 /404.html 

finale

J'ai créé un projet et essayé votre exemple, et cela a fonctionné parfaitement sur ma machine. S'il vous plaît suivez les étapes ci-dessous attentivement:

Étape 1: Créer un nouveau projet intitulé: stackoverflow sur le dossier racine.

Étape 2: Créer un fichier index.php avec le code ci-dessous:

<html> 
<head> <title>Hey</title></head> 
<body> 
<h1 > THIS IS HOME PAGE </h1> 
<a href="bolade/1"> Link 1 </a> 
<br /> 
<a href="bolade/2">Link 2</a> 

</body> 
</html> 

Étape 3: Créer beedy.php fichier avec le code ci-dessous:

<?php 
    $id = $_GET["user"] ; 

    switch ($id) { 
     case 1: 
      echo "This is the First value<br />" ; 
      break ; 

     case 2: 
      echo "This is the Second value<br />" ; 
      break ; 
    } 
?> 

<html> 
    <head><title>Hey Beedy</title></head> 
    <body> 
     <a href="/stackoverflow/about"> Go to About Us</a> 
     <br /> 
     <a href="/stackoverflow/contact"> Go to Contact Us</a> 
     <br /> 
    </body> 
</html> 

Notez que les liens pointent vers l'étoile de l'URL complète ting à partir du fichier racine

Étape 4: Créer about.php & contact.php fichiers.

Étape 5: Créer un fichier .htaccess avec le code ci-dessous:

Options +FollowSymLinks 
Options All -Indexes 
RewriteEngine On 
# ------------------------------------------- 

RewriteRule ^home      index.php  [L,NC] 
RewriteRule ^about      about.php  [L,NC] 
RewriteRule ^contact      contact.php  [L,NC] 
RewriteRule ^bolade/([a-zA-Z0-9-]+)$  beedy.php?user=$1&%{QUERY_STRING} [L,NC] 
RewriteRule ^bolade      beedy.php  [L,NC] 

# ------------------------------------------- 
RewriteCond %{REQUEST_URI} !^/(.*) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 

ErrorDocument 404 /404.html 

Si vous avez encore des problèmes, je peux vous envoyer le projet de test que j'ai créé.

+0

Merci. S'il vous plaît pouvez-vous me donner un exemple de comment je peux ajuster cela dans mon fichier .htaccess –

+0

Oui bien sûr, mais d'abord pouvez-vous s'il vous plaît envoyez-moi la structure de votre projet, et où se trouvent les fichiers? Sont-ils dans le même répertoire? –

+0

Ok merci ... Le nom du dossier parent est 'mvc' qui a un dossier enfant appelé 'bd' à l'intérieur soit où je hve htaccess fichier et index et sur nous. Mais j'ai aussi des fichiers dans le mvc. Donc ça va comme ça Mvc-> bd-> htaccess, beedy.php, index.PHP et about.php –