2013-09-01 3 views
1

Je sais que cette question a été posée et répondue plusieurs fois, mais mon expérience de .htaccess, d'expressions de regualr, de réécritures de mod etc. m'ont normalement rendu fou.changer la structure de l'URL en structure de type répertoire

Je vois sur la plupart des sites Web la structure de l'URL est dans une structure de type répertoire, wwww.linku.biz/edit. Ma question ultime est comment fais-tu cela?

Est-ce que tous ces sites dans les coulisses ont des variables d'URL normales mais ont juste réécrit? comme www.linku.biz/myprofile?edit="whatever", est-ce tout fait avec .htaccess, et mod_rewrites?

  • Je veux taper mon url www.linku.biz/search mais son fait www.linku.biz/search.php

  • Je veux taper mon url www.linku.biz/JackTrow mais son fait www.linku.biz/profile.php?us="JackTrow

  • Je veux aussi des données récrit quand J'ai beaucoup de données URL, telles que www.linku.biz/search?a=1&b=2&c=3 en cours d'être www.linku.biz/search.php?a=1&b=2&c=3

+0

Oui , regardez le [wiki du tag mod-rewrite] (http://stackoverflow.com/tags/mod-rewrite/info) ou le [manuel d'Apache sur ce sujet] (http://httpd.apache.org/docs/2.0 /misc/rewriteguide.html). Dites ce que vous avez essayé. – mario

+0

duplication possible de [hide .php extension - htaccess] (http://stackoverflow.com/questions/8371634/hide-php-extension-htaccess) – mario

+0

duplication possible de [Comment puis-je obtenir une URL comme www.example.com/nom d'utilisateur à rediriger vers www.example.com/user/profile.php?uid=10?](http://stackoverflow.com/q/9873641) ou [MOD \ _REWRITE HELP!] (http: // stackoverflow. com/q/2790463) ou [PHP Mod réécriture pour les comptes d'utilisateurs] (http://stackoverflow.com/q/17386622) – mario

Répondre

1

Activer mod_rewrite et .htaccess par httpd.conf puis mettre ce code dans votre .htaccess sous DOCUMENT_ROOT répertoire:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+search\.php\[?^\s] [NC] 
RewriteRule^search? [R=301,L] 

RewriteRule ^search/?$ search.php [NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ profile.php?us=$1 [QSA,L] 

S'il vous plaît noter que votre exigence 1 & 3 seront tous deux couverts par la règle n ° 1

0

Ajouter ces règles à votre fichier .htaccess dans le dossier racine:

Pour ce faire www.linku.biz/JackTrow <--- www.linku.biz/profile.php?us="JackTrow

RewriteRule ^profile.php?us=(.*)$ /$1 [R=301,L] 

Pour ce faire: www.linku.biz/search however <--- www.linku.biz/search.php

RewriteRule ^(.*).php$ /$1 [R=301,L] 

Votre dernier, je n'ai pas compris ce que tu veux exactement.

+1

Certainement pas aller travailler comme RewriteRule ne correspond pas à QUERY_STRING. – anubhava