Meine ist Ordnerstruktur etwas wie folgt aus:Wie behebe ich Links in verschiedenen Verzeichnissen bei der Verwendung von htaccess und RewriteRules?
.htaccess
index.php
topics.php
create.php
register.php
templates/
frontpage.php
topics.php
create.php
register.php
includes/
header.php
footer.php
Wenn ich auf index.php
die Links in Kopf- und Fußzeile Arbeit perfekt. Um die URLs zu reinigen, habe ich eine .htaccess
-Datei, die wie folgt aussieht:
RewriteEngine On # Turn on the rewriting engine
# Manually rewriting rules for pages to preserve user profile pages - need to fix later
RewriteRule ^about$ about.php [NC,L] # take out .php extention
RewriteRule ^register$ register.php [NC,L] # take out .php extention
RewriteRule ^create$ create.php [NC,L] # take out .php extention
# Rewrite topic page
RewriteRule ^topics/category/([A-Za-z0-9-]+)/?$ topics.php?category=$1 [NC,L]
# Rewrite user profile pages to MyMentor.Codes/username
RewriteRule ^([A-Za-z0-9-]+)/?$ user.php?username=$1 [NC,L]
Meine Links in header.php
sieht wie folgt aus:
<a href="about"></a>
<a href="register"></a>
<a href="create"></a>
<a href="find-mentor"></a>
Und die Themen Link in footer.php
loos wie folgt aus:
<a href="topics/category/<?php echo $category->name; ?>"><?php echo $category->name; ?></a>
lassen Sie uns jetzt sagen, dass ich auf der Seite bin website.com/topics.php?category=programs
Mein .htaccess
Seite ändert es auf website.com/topics/category/programs
so wie es sein sollte.
jedoch jetzt, dass ich bei website.com/topics/category/programs
all meinen Links in Header website.com/topics/category/index.php
gehen (oder was auch immer Link wäre es), und die Themen Link in der Fußzeile website.com/topics/category/topics/category/programs
Innenkopf geht, kann ich ändern Sie die Links zu <a href="../../myLink">
, und das wird die Links für topics.php
beheben, aber offensichtlich verwirrt dies die Links, wenn ich auf einem der Controller-Seiten auf dem gleichen Niveau bin wie index.php
und Gleiches gilt für die Fußzeile, I könnte es zu <a href="<?php echo $category->name; ?>"><?php echo $category->name; ?></a>
ändern, die den Link wenn innerhalb themes.php behebt, aber wieder, wenn ich o bin n das Stammverzeichnis wie index.php
oder eine andere Seite auf dieser Ebene geht der Link zu website.com/programs
und wirkt, als ob es eine meiner Benutzerprofilseiten (siehe .htaccess
)
Wie kann ich diese Links oder meine .htaccess
Seite so dass ich don beheben muss nicht für jede Seite eine eigene Kopf- und Fußzeile haben?
ich auf localhost bin Tests. Wenn ich alle meine Links bearbeitet habe, um das '/' hinzuzufügen, werden alle Seiten jetzt auf 'localhost/thisPage' anstatt auf '/ localhost/website/thisPage' geleitet. – amallard
@amallard siehe meine aktualisierte Antwort. – BeetleJuice
Mit 'Rewrite Base '/ website /'' Erhalte ich einen Serverfehler 500. Wenn ich ihn zu 'RewriteBase '/ website /'' ändere und die '/' vor meinen Links belasse, gehen sie immer noch zu 'localhost/thisPage' – amallard