2010-03-17 6 views
1

Le site web fonctionne sur un hébergement web où nous n'avons pas accès au fichier htaccess. Le serveur web est Apache. Je veux réécrire l'URL. Par exemple: L'URL d'origine: www.mydomainname.com/en/piecework/piecework.php?piecework_id=11 URL attendue: piecework.mydomainname.com/en/11Réécrire l'URL en PHP sans htaccess

Comment faire?

+0

Supposons que je peux utiliser mod_write, comment y parvenir? – Steven

Répondre

2

Malheureusement, sans accès htaccess ou apache config, vous ne serez pas en mesure de le faire. Bug le diable hors de votre hôte ou en obtenir un nouveau. La plupart des hôtes partagés cheapo là-bas offrent mod_rewrite de mon expérience.

+0

Comment faire avec mod_rewrite? – Steven

+0

mod_rewrite nécessite .htaccess ou le fichier de configuration Apache principal. – alex

-1

Vous pouvez réellement faire physiquement dossiers/fichiers (de sorte que le chemin accède réellement existe physiquement) puis rediriger/gérer de façon appropriée dans les - peu maniables mais si elle est votre seul choix ....

Une autre possibilité serait voir si votre hôte vous autorisera au moins un document d'erreur 404 personnalisé et ensuite gérer tout ce qui s'y trouve basé sur le REDIRECT_URL.

1

J'ai vu des gens tokenize la chaîne de requête pour accomplir (sorte de) ce que vous parlez, à savoir:

domain.com/foo/bar/11 

est en fait interprété comme:

domain.com/foo/bar/11.php?action=foo&query=bar 

Cependant, vous devez créer ces sémantiques dans la structure de répertoire physique. C'est moche, indiscipliné à gérer et beaucoup plus facile à réaliser avec mod_rewrite.

Vous probablement avez mod_rewrite activé, here's a short tutorial pour vous aider à démarrer.

1

Ce code pourrait être ce que vous cherchez: Utilisation: phpfile.php/en/11 Note: pas de mod_rewrite requis.

<?php 

$DEFAULT_ACTION = 'badAction'; 

$pathInfo = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : ''; 
$pathParts = explode('/', substr($pathInfo, 1)); 
$action = isset($pathParts[0]) ? $pathParts[0] : $DEFAULT_ACTION; 

if (function_exists($action)) { 
    $action($pathParts); 
} else { 
    badAction(); 
} 

function badAction($parts = null) 
{ 
    print 'The function specified is invalid.'; 
} 


function en($parts) 
{ 
    $name = isset($parts[1]) ? $parts[1] : 'undefined'; 
    $xml = new SimpleXMLElement('<message>Number: ' . $name . ' </message>'); 
    header('Content_Type: text/xml'); 
    print $xml->asXML(); 
} 


?> 

ps. J'ai trouvé le code dans 'Professional PHP6' ISBN: 978-0-470-39509-7