2008-11-27 3 views
2

J'ai un htaccess existant qui fonctionne très bien:Comment rediriger les URL commençant par/test/vers un script séparé?

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule (.*) /default.php 
DirectoryIndex index.php /default.php 

Je souhaite modifier cette façon que tous les urls qui commencent par/test/aller à /test/default.php.

Exemple: http://www.x.com/hello.php ->http://www.x.com/default.php Exemple: http://www.x.com/test/hello.php ->http://www.x.com/test/default.php

+0

désolé, n'a pas été assez précis. Je veux que d'autres liens que/test/links continuent d'aller au script original. –

+0

Dans le deuxième exemple, avez-vous besoin de garder les informations 'hello.php'? – Ken

+0

non, ce n'est pas important. –

Répondre

3

En gros, il suffit de mettre /test/ devant votre expression. En outre, les parenthèses ne sont pas nécessaires ici:

RewriteRule ^/test/ /test/default.php 
0

Si vous devez transmettre des informations à partir de l'URL que vous pouvez capturer (avec des parenthèses) et l'envoyer à default.php (avec 1 $) comme suit:

RewriteRule ^/test/(.*)$ /test/default.php/$1 

de sorte que http //..../ test/foo/bar/se traduise par /test/default.php/foo/bar/. Votre script peut alors accéder aux informations supplémentaires.

0

J'utilise:

RewriteCond %{REQUEST_URI} ^/([^/]*/)* 
RewriteRule !/default\.php$ %0default.php [L] 
0
RewriteRule ^/test(/.*)?$ /test/default.php [L] 

Accédez à l'URI d'origine, le cas échéant, dans le tableau global $ _SERVER.

A en juger par votre original, vous voulez probablement:

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^/test(/.*)?$ /test/default.php [L] 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^(.*)$ /default.php 
Questions connexes