Jolies URL sans mod_rewrite, sans .htaccess
Sans possibilité d'accès .htaccess, je me trouve dans une impasse créative. Il n'y a pas de mod_rewriting pour moi. Néanmoins, je veux être capable de faire des trucs sympa comme:
http://www.example.com/Blog/2009/12/10/
http://www.example.com/Title_Of_This_Page
Quelles sont mes options?
En réponse à la réponse:
- Je suis en train de construire avec php5
- Je n'ai pas accès .htaccess
http://www.example.com/index.php/Blog/
est une technique connue mais je ne préfère pas. Est montre le php pour ainsi dire.- Comment puis-je créer extensionless fichiers PHP? Serait-il faire l'affaire?
- Combien à l'aide de la 404 personnalisée technique de nuire à la performance?
source d'informationauteur Kriem
Vous devez vous connecter pour publier un commentaire.
Si vous avez les autorisations de définir les documents de l'erreur de votre serveur, vous pouvez l'utiliser pour rediriger 404 demandes.
E. g. pour Apache (http://httpd.apache.org/docs/2.0/mod/core.html#errordocument)
Dans le index.php ensuite, vous pouvez passer votre demande en utilisant les données de la valeur de $_SERVER tableau.
Vous pouvez également avoir des urls comme
hors de la boîte avec PHP5. Vous pouvez alors lire les paramètres d'URL à l'aide de
N'oubliez pas de valider/filtre le PATH_INFO et toutes les autres variables avant de les utiliser dans votre application.
Je sais que cette question est très vieux, mais je ne pensais pas voir quelqu'un d'autre suggérer cette solution...
Vous pouvez obtenir de très près à ce que vous voulez juste en ajoutant un point d'interrogation après la partie domaine de l'adresse URL, c'est à dire;
Les deux requêtes HTTP seront désormais gérées par le même
PHP
script;et dans le
index.php
script,$_SERVER['REQUEST_URI']
pour les deux pages ci-dessus seront respectivement;Blog/2009/12/10/
Title_Of_This_Page
de sorte que vous pouvez gérer comme vous le souhaitez.
Un assez moyen simple est d':
.htaccess
$_SERVER
et voir si elle correspond à aucun résultatheader()
et comprennent index.phpSi vous omettez un slash de fin, Apache va servir le premier fichier [par ordre alphabétique] qui correspond à ce nom, quelle que soit l'extension, au moins sur les 2 serveurs, j'ai accès.
Je ne sais pas comment vous pourriez l'utiliser pour résoudre votre problème, mais il peut être utile à un certain point.
Par exemple, si
http://www.somesite.com/abc.html
ethttp://www.somesite.com/abc.php
les deux existent ethttp://www.somesite.com/abc
est demandé,http://www.somesite.com/abc.html
sera servi.La seule façon est d'utiliser la page 404 personnalisée. Vous n'avez pas la possibilité d'interpréter extensionless fichiers avec PHP sans avoir à reconfigurer le serveur web MIME-types. Mais vous dites que vous ne pouvez pas modifier même .htaccess, donc il n'y a pas d'autre moyen.
Vous pouvez écrire une classe URI qui traite l'utilisateur conviviale de l'URL que vous avez défini.
Si le
MultiViews
option est activée ou que vous pouvez les convaincre celui qui détient les clés pour l'activer, vous pouvez faire un script qui s'appelle Blog.php qui sera transmis les demandes deexample.com/Blog/foo
et get '/foo " dans le$_SERVER['PATH_INFO']
.