如何改变?在GET POST表单请求之后id=302到/this-is-my-site.html


How to change ?id=302 to /this-is-my-site.html after a GET POST form request?

好吧,这可能很容易,但我只是花了一点时间试图让它发挥作用。

我在一个带有文本区域(name=id(的页面上有一个小的GET表单。。当一个人输入一个ID号(这只是故事中的POST ID(时,我会将其显示在URL中,如下所示:

http://mywebpage.com/page.php?id=582

所以它只是从URL中获取id并在查询中使用它。我的表中有一个URL行,它是炒作的标题,就像这样:this-is-my-site,它只是获取故事的标题,并通过一个函数非常快速地运行它。

我的问题是,我如何保持相同的格式,但当表单被提交以按ID查找故事时,我如何获得标题中的URL行来替换我的?id=变量??

所以不是

http://mywebpage.com/page.php?id=582

它将返回

http://mywebpage.com/page.php/this-is-my-site.html

提前感谢!

if(isset($_GET['id'])){
     $id=intval($_GET['id']); // sanitize it
     // get row by id
     //also we can redirect here to pretty url by 
     header('Location:'. $url)
}
else{
     //get by URI
}

PS:我不知道如何在重写(和.htaccess(中使用数据库,但这个解决方案不需要它。使用$_SERVER['PATH_INFO']

使用htaccess无疑是您的最佳选择。

RewriteEngine On 
RewriteRule /page/(.*)$ /page/page.php?id=$1 

那会把你的页面改写成

www.yoursite.com/page/3

这对你的链接来说是非常SEO友好的。

http://mywebpage.com/page.php?id=582中,您可以检查url友好名称,并使用header('location: http://mywebpage.com/page.php/this-is-my-site.html');重定向到具有漂亮名称的url。

之后,您可以检查名称(使用.htaccess(并从数据库中获取id。