Question

Can someone help me again regarding this rewrite module,

with this rules

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) $1.php [QSA,L] 

with this rules, i can get the requested url www.example.com/test to www.example.com/test.php but how can i get following url www.example.com/test/test2/test3/test4 to www.example.com/test.php

i tried

RewriteRule (.*)/?$ $1.php [QSA,L]

don't laugh at me... i actually tried

RewriteRule (.*)/(.*)/(.*)/(.*)$ $1.php [QSA,L] 

and this works for this link

www.example.com/test/test2/test3/test4 to www.example.com/test.php

but, not for this one...

www.example.com/test to www.example.com/test.php

i'm using explode on Php cause i don't know how many parameters, that i need, if it is only 2 parameters, and this rules should be work.

RewriteRule ^(.+/)?([^/]*)$ p.php?s=%1&p=$2 [QSA,L,NC]

i did keep checking every similiar questions, which appear on the right, but i don't see any solution yet.

Était-ce utile?

La solution

You were creating an endless redirect. Try this checking for .php in the request. Also if you're not pulling the slashes the Apache would redirect to a non-existent index.php inside of some folder.

Example 1

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)/ $1.php [QSA,L]

This takes the first directory matched and pulls it into the query string.

www.example.com/file/param1/param2/param3 shows this www.example.com/file.php

Example 2

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)/(.*)$ $1.php?params=$2 [QSA,L]

This takes the first directory matched and pulls it into the query string. The rest of the URI is added as a parameter

www.example.com/file/param1/param2/param3 shows this www.example.com/file.php?params=param1/param2/param3

Example 3

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)/?([^/.]+)?/?([^/.]+)?/?([^/.]+)?$ $1.php?p1=$2&p2=$3&p3=$4 [QSA,L]

www.example.com/file/param1/param2/param3 shows this www.example.com/file.php?p1=param1&p2=param2&p3=param3


Note: [QSA] keeps the existing parameters, so &original_parameter=param is appended to the rewritten query string.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top