0

I have a Problem with my Nginx rewrite rule.

I have two Pages :

  • First Page : category.php
  • Second Page: subcategory.php

My Page :

<!doctype html>
<html>
    <head></head>
    <body>
        <ul>
            <?php 
                while($row = $smtp->fetch(PDO::ASSOC)){
                echo "li><a href='category.php? id='".$row['id']."'>'".$row['name']."'</a></li>";
                }

                ?>
        </ul>
        <?php
            while($row = $smtp->fetch(PDO::ASSOC)){
            echo "li><a href='subcategory.php?id='".$row['id']."'>'".$row['name']."'</a></li>";
            }
            ?>
    </body>
</html>

My Problem is if I push a Link with category.php?id=3. I will get the same page with other values but the Links of subcategory.php looks different no subcategory.php?id=1

The looking like category/subcategory/2

The FireBug show right url: subcategory.php?id=1.

Why?

My rewrite rule :

rewrite '^/category.php/(.*)$' /subcategory.php?id=$1 last;

I need a Link like subcategory/1 and not category/subcategory/1

9
  • Please edit your question to the human understandable level, it is difficult to understand it. Commented Nov 2, 2016 at 11:40
  • Sorry, it not very easy to explain. I have a Page with two Links on it, category.php and subcategory.php. If i click on a category.php i get a new content from this category but if i want to load a subcategory a can not do it. Because my URL link look like category/subcategory/1. I need a Link to load a subcategory. Right Link should look like subcategory/1 and not category/subcategory/1. The Link change himself if i click category.php at first. Commented Nov 2, 2016 at 15:11
  • According to your HTML, your URL looks like, baseurl/category.php and baseurl/subcategory.php, so how is baseurl/category/subcategory/1 is coming into scene? Commented Nov 2, 2016 at 15:31
  • This is exactly what I would like to understand :-). I do not know how to change from baseurl / category / subcategory / 1 to normal baseurl / subcategory.php Commented Nov 2, 2016 at 15:45
  • Can you show your nginx config, server block? Commented Nov 2, 2016 at 15:48

1 Answer 1

1

There's a few little issues here.

To answer your question, the first part is with the URLs in the href. You are using relative URLs and relative URLS get added to what the browser thinks is the current URL directory.

If you are at http://yourdomain.com/category/[something] then href="subcategory.php?id..." will send you to http://yourdomain.com/category/subcategory.php?id... - as the current ULR directory is http://yourdomain.com/category/

Even if the link is virtual (i.e. modified in .htacess) the browser doesn't know this and it's be browser that makes the links.

Your fix would be to use absolute urls href="/subcategory.php?id..." as this will send you to http://yourdomain.com/subcategory.php?id...


Another problem appears in your redirect.

You are looking to match:

http://yourdomain.com/category.php/[Something]

but what I presume you want to match is:

http://yourdomain.com/category/[something]

Hope that helps.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.