mod_rewrite für sub-Verzeichnis
Ich habe eine domain und einen sub-Ordner, genannt "sub"..innen "sub" ist index.php was hat diese:
$page = $_GET['page'];
switch ($page)
{
case "main":
echo "main";
break;
case "task_orders":
echo "task_orders";
break;
case "team_members":
echo "team_members";
break;
case "team_experience":
echo "team_experience";
break;
case "quality_assurance":
echo "quality_assurance";
break;
case "geographical_support":
echo "geographical_support";
break;
case "contact":
echo "contact";
break;
default:
echo "main";
}
meine htaccess in "sub" ist:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^sub/([^/\.]+)/?$ index.php?page=$1 [L]
wenn ich auf einen link klicken, die folgendermaßen aussieht:
<li><a href="/sub/main" title="Main" class="current">Main</a></li>
<li><a href="/sub/task_orders" title="Task Orders">Task Orders</a></li>
<li><a href="/sub/team_members" title="Team Members">Team Members</a></li>
<li><a href="/sub/team_experience" title="Team Experience">Team Experience</a></li>
<li><a href="/sub/quality_assurance" title="Quality Assurance Program">Quality Assurance</a></li>
<li><a href="/sub/geographical_support" title="Geographical Support">Geographical Support</a></li>
<li><a href="/sub/contact" title="Points of Contact">Points of Contact</a></li>
Bekomme ich ein "Seite nicht gefunden" anstatt echo heraus, welche Seite ich bin auf, irgendwelche Ideen?
Ich auch versucht:
RewriteRule ^/sub/([^/\.]+)/?$ /sub/index.php?page=$1 [L]
und dasselbe Ergebnis
- Blick auf das access-log zu sehen, was angefordert wird. Schritt #1 im Debuggen von rewrite-Regeln ist, SCHAUEN Sie IN DIE PROTOKOLLE.
- leider enthalten Sie nichts in Bezug auf die web-site, die ich auf Arbeit bin. Ich bin auf einem dedizierten server, so habe ich Zugriff auf die logs, und Sie noch nicht aktualisiert wurde für etwa eine Stunde und ich habe versucht, Sie ein bisschen umschreiben combos
- Es sollte eine Zeile für jeden Treffer, die Sie durchgeführt haben. Wenn die logs, die Sie suchen, nicht aktualisiert wurden, dann werden diese nicht "live" protokolliert.
- das ist das, was ich mir auch so gedacht..ich bin auf den root von meinem server in der /logs-Ordner..an der Seite, der Ordner ist /etc, /users, /stats und ein paar andere
- Überprüfen Sie für
CustomLog
und die wie in der Apache-Konfiguration. Das wird Ihnen genau sagen, wo Sie sind. In der Regel, dass in/var/log/httpd
oder/var/log/apache
oder ähnliches.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist fast da. Sie wollen nicht, um anzugeben, der führende
/
beim schreiben derRewriteRule
.In der document-root:
Von /sub-Ordner:
RewriteRule ^sub/([^/\.]+)/?$ /sub/index.php?page=$1 [L]
glaubst du, es hat etwas zu tun mit einer htaccess in root?.htaccess
im root einen Ordner namenssub
und einindex.php
im inneren dessub
Ordner. Sind Sie sicher, dass die.htaccess
- Datei gelesen, die von Ihrem server?Wenn Ihr .htaccess in einem Unterverzeichnis, das Sie nicht haben, schreiben Sie den vollständigen Pfad in einer RewriteRule.
So verwenden Sie diese in Ihrem .htaccess im Unterverzeichnis:
oder im Stammverzeichnis .htaccess: