.htaccess pour sous-dossier
Je avoir la structure suivante
-www
\-subfolder
Dans www
j'ai mon site principal est index.php
.
Dans le sous-dossier j'ai une sorte d'administrateur de l'INTERFACE utilisateur et là j'aimerais avoir un autre index.php
pour l'administrateur de l'INTERFACE utilisateur.
Actuellement mes demandes de l'intérieur /subfolder/index.php
être redirigé vers www/index.php
et, fondamentalement, les pages de mon administrateur de l'INTERFACE utilisateur ne s'affichent pas.
C'est mon .htaccess
fichier:
RewriteEngine On
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ index.php?lang=$1&page=$2 [L]
Pouvez-vous m'aider? J'ai essayé plusieurs options dans d'autres réponses, mais comme je ne suis pas tellement avancé d'un développeur web, je ne pouvais pas faire le travail.
@TerryE, Désolé si j'ai sauté du pétrole brut.
Je suis à l'aide d'une installation locale pour les tests.
J'ai installé Vertrigo serveur, ce qui me donne du serveur Apache.En cours d'exécution sur Windows 7 OS. Le serveur est installé dans Program files\VertrigoServ\dossier Apache.
Mon dossier public est www. Là j'ai mon site principal de la définition. . Le site est accessible localement via 127.0.0.1/index.php
ou 127.0.0.1/
J'ai site de localisation si les Url sont construits comme /$lang/$page
par exemple <a href=" /<?php echo $lang; ?> /home "> HOME </a>
Dans index.php
de site principal, j'ai le texte suivant:
$page = trim( ( isset( $_GET[ 'page' ] ) ? $_GET[ 'page' ] : 'home' ), '/' );
$lang = trim( ( isset( $_GET[ 'lang' ] ) ? $_GET[ 'lang' ] : 'en' ), '/' );
$langs = array( 'en', 'fr', 'ru' );
Et en fonction des données j'arrive à ouvrir les pages de cette façon:
include 'html/'. $lang . '/' . $page . '.php';
Tous mes principales pages du site se situent dans www/html/$lang/
$_SERVER['REQUEST_URI'])
donne /en/home
pour la page d'ACCUEIL.
127.0.0.1/en/home
ŒUVRES
Tous les éléments de navigation fonctionne parfaitement pour le site principal.
Toutefois, j'ai créé un administrateur de l'INTERFACE utilisateur qui se trouve dans le dossier www/admin - un niveau en dessous de dans www.
Et là je n'ai pas de localisation. Je viens de l'avoir EN tant que langue.
Donc, en haut de la index.php dans le dossier admin, j'ai à nouveau
$page = trim( ( isset( $_GET[ 'page' ] ) ? $_GET[ 'page' ] : 'home' ), '/' );
Cependant, ici, la navigation est comme suit <a href=/admin/home"> HOME </a>
et sur ce j'arrive à construire les pages de la index.php dans le dossier admin comme suit:
include 'html/. $page . '.php';
les pages se situent dans www/admin/html
Cela ne fonctionne pas du tout. Chaque fois que j'appuie sur le lien accueil dans l'admin de l'INTERFACE utilisateur, j'ai redirigé vers mon site principal (non-existence d'une page). Si j'ajoute RewriteRule ^subfolder/- [L]
dans .htaccess, je reçois HTTP 404 NOT Found error
.
127.0.0.1/admin/home
NE FONCTIONNE PAS. Aucune autre la navigation à partir de l'admin. Je vous remercie pour votre bonne volonté et la patience de m'aider!
- Merci de ne pas reposter la même question. Si vous avez des informations supplémentaires ou souhaitez changer quoi que ce soit, de modifier votre message d'origine à la place.
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous avez un seul .htaccess fichier dans votre www répertoire.
Penser à ce que la règle
ne interprété dans un Perdir contexte de www: prendre n'importe quel URI de la forme
someDir/somePage
et de la remplacer parindex.php?lang=someDir&page=somePage
, ce qui permettra de les intercepter et de réécrire tout/subfolder/index.php
.Ce n'est pas bien documenté, mais Perdir traitement sera préférentiellement utiliser la plus faible .htaccess fichier de configuration
RewriteEngine On
sur le chemin de la requête. Donc, si vous ajoutez un admin spécifiques .htaccess fichier dans le "sous-dossier de sous-dossier, cela permettra d'éviter la www l'un et de contourner ce problème.Postscript commentaires
Veni et autres affiches obtenir dans un Q&A quand le véritable enjeu est celui de "comment déboguer mon .les règles htaccess si j'ai mon site web est hébergé par un service partagé?" La raison que j'ai ajouter le service partagé de qualification, c'est que si vous avez accès à la racine de votre LAMPE de config puis vous pouvez activer la Réécriture de la journalisation et le fichier de log au niveau de débogage de 4 à 6 vous donnera assez de médecine légale afin de travailler sur ce qui se passe.
Toutefois, la grande majorité des passe-temps /petit service, les utilisateurs achètent leurs services sur une base de partage et ici, ils n'ont pas accès à la racine et le fournisseur d'hébergement désactive cet enregistrement pour des raisons de performance, de sorte qu'ils ont un binaire commentaires -- les règles de travail ou qu'ils n'en ont pas. J'utilise un service partagé et mon approche (décrit ici) est de mettre en place une VM qui reflète cette configuration pour le test et l'intégration de l'environnement, et j'ai comme l'accès à la racine. Cependant, c'est sans doute trop compliqué pour la plupart des utilisateurs. C'est vraiment un sujet plus vaste qui mérite son propre Q /discussion.
Sur des points précis:
Si votre structure est
/(lang|admin)/page
, alors pourquoi avez-vous cette règle, car il peut causer des ravages sur les perdir tentatives.Mieux quelque chose comme ce qui suit afin de forcer une redirection vers une langue par défaut (à supposer la lang liste est FR et dans cet exemple:
Êtes-vous conscient de la redirection de redémarrage en boucle questions? (recherche de REDIRECT_STATUS)
Je suis nouveau sur Stackoverflow, mais pas pour le tri de ce genre de s**t. J'ai un couple de des articles sur mon blog sur ce.
Postscript commentaires -- encore plus
OK certains d'aide générale.
Il aide également si vous avez un peu de tampon de diagnostic pour vous aider à comprendre ce qui se passe et c'est ce que j'ai trouvé pour index.php dans le test de répertoires:
Mais vous avez vraiment besoin pour chacun des cas suivants:
- gérer l'URI existe (et arrêter de réécrire les boucles)
- les valeurs par défaut de /et /admin/
- admin/*
- */*
- * (et la langue par défaut)
et c'est ce que je suis venu avec. J'ai gardé les choses simples. Nous pourrions utiliser les expressions régulières complexes à la fois certains de ces, mais pourquoi s'embêter. Vous devrez peut-être ajouter plus de QSAs si nécessaire.
subfolder/.htaccess
fichier si il existe et RewriteEngine on. Si vous avez n'allez pas réécrit à faire, alors vous n'avez pas besoin de tout. Cela signifie que l'accès à la racine du fichier n'est pas traité pour le sous-dossier UriVous pouvez prévenir les demandes vers vous sous-dossier à partir de la réécriture avec la modification ci-dessous