How to htaccess rewrite without php extension

Hi,

I want to rewrite http://www.mywebsite.com/de/contact.php to http://www.mywebsite.com/de/contact/ So without the .php extension
I also have some link refering to index.php. fi http://www.mywebsite.com/index.php
I want that also rewrited as http://www.mywebsite.com/
I had the following but that didn't seem to do the job.

RewriteRule (.*)\/ $1.php

Open in new window

LVL 1
Johan85Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Graceful_PenguinCommented:
Try this code
RewriteBase /  command should be on if the htaccess file is not in root.

RewriteEngine on
RewriteBase /de
 
RewriteCond %{REQUEST_FILENAME} !(index\.php)
RewriteRule (.*)\/ $1.php

Open in new window

0
Johan85Author Commented:
I tested it and I got this error


Not Found
 
The requested URL /de.php was not found on this server.
Apache/2.2.3 (CentOS) Server at www.campinggroenewoud.nl Port 80

Open in new window

0
Graceful_PenguinCommented:
What was the URL that you used, also could you tell me the in which directory the .htaccess file is.
0
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

Johan85Author Commented:
I used the code below. The .htaccess is in the root directory (I removed the RewriteBase command). I get the error message with all URLs. One of the url's I tested is http://tinyurl.com/ly994t
RewriteEngine on
 
RewriteCond %{REQUEST_FILENAME} !(index\.php)
RewriteRule (.*)\/ $1.php

Open in new window

0
Graceful_PenguinCommented:
Try this
RewriteEngine on
 
RewriteCond %{REQUEST_FILENAME} !(index\.php)
RewriteRule (.*)\/(.*) $1/$2.php

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Johan85Author Commented:
I get this message

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache/2.2.3 (CentOS) Server at www.campinggroenewoud.nl Port 80
0
Graceful_PenguinCommented:
I forgot the escape chars
RewriteCond %{REQUEST_FILENAME} !(index\.php)
RewriteRule (.*)\/(.+) $1\/$2\.php

Open in new window

0
Johan85Author Commented:
Sorry, only the index.php pages are working. And it doesn't rewrite /index.php to /

The other pages give the internal server error I mentioned before.
0
Graceful_PenguinCommented:
is the language directories actual directories or virtual? If they are actual dirs the best would be to have tree .htaccess files one in root with this command:
RewriteRule ^index.php$ http://www.  and then an htaccess file in each of the langauges with therse commands:
RewriteEngine on
RewriteBase /dirname
RewriteRule (.*)\/ $1.php
Not only will this be easier to maintain it would also be better for performance.
0
Johan85Author Commented:
They are actual directories.

And still not working. The URL's stay the same and some images are not loaded properly with the code above.
0
Graceful_PenguinCommented:
Sorry I wanted to add your url into the rule but forgot it should be
RewriteRule ^index.php$ http://www.campinggroenewoud.nl
and this for the language dirs

RewriteEngine on
RewriteBase /dirname
RewriteRule (.*)\/ $1.php  
0
Johan85Author Commented:
I'm still getting the internal server errors, or no rewriting is applied. I have other domains on the same server with succesful rewriting, so I don't know where the problem is.
0
Graceful_PenguinCommented:
I don't know ehat is wrong because it is working on my server. maybe you should try to escape all the fullstops.
0
Johan85Author Commented:
I don't understand either. If I do something like

RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite.lu [NC]
RewriteRule ^(.*)$ http://www.mysite.lu/$1 [L,R=301]

it works.

But the url rewriting does not happen.
0
Johan85Author Commented:
I found this in the error log

[Thu Jul 16 16:04:11 2009] [alert] [client 81.83.8.199] /httpdocs/.htaccess: RewriteCond: bad flag delimiters
[Thu Jul 16 16:04:12 2009] [alert] [client 81.83.8.199] /httpdocs/.htaccess: RewriteCond: bad flag delimiters
[Thu Jul 16 16:04:12 2009] [alert] [client 84.196.202.182] /httpdocs/.htaccess: RewriteCond: bad flag delimiters, referer: http://www.campinggroenewoud.nl/nl/kamperen.php
0
Graceful_PenguinCommented:
This part of the line is the flags :[L,R=301] can you check all the .htaccess files on your site to see if any of the flags are invalid.
check this site for the flags
http://www.htaccesselite.com/mod-rewrite-flags-vt101.html
 
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Web Development

From novice to tech pro — start learning today.