2011-01-23 3 views
1

Je travaille depuis un certain temps pour essayer d'obtenir.htaccess redirect et obtenir des variables trouble

website.com/$1/$2/$3 
website.com/$1/$2 

pour produire

website.com/public/index.php?module=$1&controller=$2&action=$3 
website.com/public/index.php?controller=$1&action=$2 

, mais je ne peux pas sembler le faire fonctionner

I Je tente ceci avec deux fichiers .htaccess

fichier .htaccess situé dans root/

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
Options +Indexes 

    RewriteEngine on 
RewriteRule !^public/ public%{REQUEST_URI} [L] 

</IfModule> 

fichier .htaccess situé dans la racine/public/

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
Options +Indexes 

    RewriteEngine on 
RewriteRule ^public/([^/]+)/([^/]+)/([^/]+)(/|)$ public/index.php?module=$1&controller=$2&action=$3 
RewriteRule ^public/([^/]+)/([^/]+)(/|)$ public/index.php?controller=$1&action=$2 

</IfModule> 

J'ai actuellement il redirigeant au public/mais ne peut pas trouver un moyen de changer les obtenir des variables

Répondre

0

Dans la racine/public/.htaccess, appariés et réécrit par rapport à pathes sont root/publique, de sorte qu'ils ne commencent pas avec le public, et vous ne devez pas essayer de faire correspondre^public:

RewriteEngine on 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)(/|)$ index.php?module=$1&controller=$2&action=$3 
RewriteRule ^([^/]+)/([^/]+)(/|)$ index.php?controller=$1&action=$2 

La barre oblique en option à la fin peut être associé à /?:

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?module=$1&controller=$2&action=$3 
0

Le Tag <IfModule mod_rewrite.c> ne fonctionne que dans la configuration apache.

Dans votre fichier .htaccess vous devez commencer par

RewriteEngine On 
RewriteBase/

suivi de vos conditions.

+1

pas vrai, œuvres dans le contexte .htaccess/annuaire trop – arnaud576875

1

je moi-même résolu avec ce beau .htaccess à la racine unique

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)\.html$ $1.php [L] 
RewriteRule !^public/ public%{REQUEST_URI} [L] 
RewriteRule ^(.*)/([style|css|js|javascript|images|img|fonts|swf]+)/(.*)$ public/$2/$3 [L] 

RewriteRule ^public/([^/]+)/([^/]+)/([^/]+)/?$ public/index.php?module=$1&controller=$2&action=$3 [L] 
RewriteRule ^public/([^/]+)/([^/]+)/?$ public/index.php?controller=$1&action=$2 [L] 

EDIT:

J'ai choisi de déplacer mon url stimulation à mon php depuis htaccess est un nightmere pour ce genre de chose et/Si Else déclarations ... étonnant nouveau code pour ceux d'entre vous avec le même problème est:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ public/index.php/$1 [L] 
RewriteRule ^(.*)/([style|css|js|javascript|images|img|fonts|swf]+)/(.*)$ public/$2/$3 [L] 

ErrorDocument 404 /error404 
ErrorDocument 403 /error403