I want to change detail.php?id=4 to detail/4,but my .htaccess file not working

184

This is my .htaccess file looks like

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s

RewriteRule ^home$ index.php [NC,L]
RewriteRule ^detail$ detail.php [NC,L]

RewriteRule ^detail/([0-9a-zA-Z]+)$ detail.php?id=$1 [NC,L]
239

Answer

Solution:

You're talking about using .htaccess to rewrite your URLs internally and route them appropriately to your application.

You should try with this specific .htaccess example that will do what you're looking for:

    RewriteEngine On

    # external redirect from actual URL to pretty one
    RewriteCond %{THE_REQUEST} /detail(?:\.php)?\?id=([^\s&]+) [NC]
    RewriteRule ^ detail/%1? [R=302,L,NE]
    # internal forward from pretty URL to actual one
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^detail/([^/]+)/?$ detail.php?id=$1

EDITED:

215

Answer

Solution:

You are doing the opposite in your htaccess, redirecting detail/4 to detail.php?id=4. In your question you say ?id=4 to /4.

So swap, edit and test

People are also looking for solutions to the problem: simply adding code to php function

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.