2017-09-22 23 views
2

Bitte ich brauche Ihre Hilfe dabei. Ich habe seit einiger Zeit mit htaccess gekämpft. Ich habe eine Index-Seite mit Links zu beedy.php die einige Parameter wiehtaccess Rewrite-Regel mit Fehler

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

passieren muss, aber ich möchte nicht, dass es den Benutzern zeigen, so schrieb ich es wie folgt Verbindung 1 der Wert Benutzer ist 1 hier Das hat gut funktioniert. Aber auf der beedy.php-Seite habe ich noch einen Link, der mich zu unserer Seite führen sollte. Wenn ich jedoch auf den Link klicke, wird die angezeigte Seite nicht gefunden (Die angeforderte URL/mvc/bd/bolade/1/seeOtherLink/About/wurde auf diesem Server nicht gefunden.) Ich habe google gesucht, aber keine war erklärend genug.

Mein Projekt ist auf diese Weise strukturiert. Mvc -> bd> Die mvc ist das Projekt übergeordneten Ordner während bd ist, wo ich andere Dateien, die ich arbeite

Die index.php Seite wird wie folgt

<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> 

Ich habe meine .htaccess-Datei wie diese

<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> 
ist

Beedy.php Seite wie folgt strukturiert

<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

Versuchen Sie, die Leerzeichen in Ihren URLs zu entfernen –

+0

Ich tat aber immer noch das gleiche Ergebnis –

Antwort

1

In Beedy.php Seite ist die URL, die Sie in der Schaltfläche eingegeben: seeOtherLink/über/ und Sie verwenden .htaccass die URL benutzerfreundlich zu machen. Die Seite, auf der Sie sich befinden, hat den folgenden Link: bolade/1/. Wenn Sie also auf einen Link auf dieser Seite klicken, wird dieser einfach zur aktuellen URL hinzugefügt, so dass die neue URL lautet: bolade/1/ + seeOtherLink/Über/ = bolade/1/seeOtherLink/Über/ Das ist keine Seite, noch ein Pfad. Der Server wird Ihnen also einen Fehler melden.

Sie müssen die URL ändern: seeOtherLink/über/ zu: http://website/seeOtherLink/About/ und natürlich müssen Sie fügen Sie es auch zu Ihrer .htaccess Datei.

Hope this helfen Ihnen


Aktualisiert

So wie ich es verstehe, ist, dass alle Ihre Dateien liegt unter bd Ordner. index.php haben zwei Links, die beide Punkte zu beedy.php und dann beedy.php 2 Links haben, die Punkte about.php und contact.php

Also Ihr.

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

ich ein Projekt erstellt haben, und versucht, Ihrem Beispiel, und es funktionierte perfekt auf meinem Rechner: .htaccess-Datei sollte auf die unter ähnlich sein. Bitte beachten Sie die folgenden Schritte sorgfältig:

Schritt 1: ein neues Projekt namens: Stackoverflow auf dem Stammordner.

Schritt 2: erstellen index.php Datei mit dem folgenden Code:

<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> 

Schritt 3: erstellen beedy.php Datei mit dem folgenden Code:

<?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> 

Beachten Sie, dass die Links auf den vollständigen URL-Stern zeigen ting von der Root-Datei

Schritt 4: erstellen about.php & contact.php Dateien.

Schritt 5: .htaccess-Datei mit dem folgenden Code erstellen:

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 

Wenn Sie immer noch Probleme haben, kann ich Ihnen das Testprojekt sende ich erstellt.

+0

Danke. Bitte geben Sie mir ein Beispiel, wie ich das in meiner .htaccess Datei anpassen kann –

+0

Ja natürlich, aber zuerst können Sie mir bitte die Struktur Ihres Projekts schicken, und wo befinden sich die Dateien? Sind sie im selben Verzeichnis? –

+0

Okay danke ... Der Name des übergeordneten Ordners ist 'mvc', der einen untergeordneten Ordner namens 'bd' hat, in dem ich htaccess-Datei und Index und über uns habe. Aber ich habe auch einige Dateien im mvc. So geht das Mvc-> bd-> htaccess, beedy.php, index.PHP und about.php –