我的Nginx重写规则有问题。
我有两个页面:
第一页:category.php 第二页:subcategory.php我的页面 :
<!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>我的问题是如果我用category.php?id=3推送链接category.php?id=3 。 我会得到与其他值相同的页面,但subcategory.php的链接看起来不同没有subcategory.php?id=1
看起来像category/subcategory/2
FireBug显示右侧url: subcategory.php?id=1 。
为什么?
我的重写规则:
rewrite '^/category.php/(.*)$' /subcategory.php?id=$1 last;我需要像subcategory/1的链接而不是category/subcategory/1
I have a Problem with my Nginx rewrite rule.
I have two Pages :
First Page : category.php Second Page: subcategory.phpMy 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
最满意答案
这里有一些小问题。
要回答您的问题,第一部分是href中的URL。 您正在使用相对URL并将相对URL添加到浏览器认为是当前URL目录的位置。
如果您在http://yourdomain.com/category/[something]那么href="subcategory.php?id..."会将您发送到http://yourdomain.com/category/subcategory.php?id... - 目前的ULR目录是http://yourdomain.com/category/
即使链接是虚拟的(即在.htacess中修改),浏览器也不知道这一点,而且它是浏览器,它是链接。
您的修复方法是使用绝对网址href="/subcategory.php?id..."因为这会将您发送到http://yourdomain.com/subcategory.php?id...
您的重定向中会出现另一个问题。
你想匹配:
http://yourdomain.com/category.php/[Something]但我认为你想要匹配的是:
http://yourdomain.com/category/[something]希望有所帮助。
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.
更多推荐
发布评论