如何在php中的表单提交get方法中将查询字符串转换为url slug?

时间:2014-09-17 12:05:22

标签: php forms .htaccess wamp

我在php开发一个网站,这是我第一个使用php的网站,而且我是php的新手。

该网站包含2个页面,index.php和info.php

index.php具有以下形式,

<form action="info.php" method="get">
    <input type="text" name="username" />
    <input type="text" name="company" />
    <input type="email" name="email" />
    <button type="submit">Click to Proceed!</button>
</form>

当用户输入并提交详细信息时。它重定向到下一页,url包含查询字符串,如

http://localhost/info?username=john&company=zend&email=beast@example.com

我想像这样显示上面的网址,

http://localhost/info/john/zend/beast@example.com

并使用$_GET['username'],$_GET['company'] and $_GET['email']

从网址获取值

我尝试了很多重写规则,包括下面的htaccess,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteRule ^([\d\w-]+)$ info?username=$1&company=$2&email=$3 [L,QSA]
RewriteRule ^([\d\w-]+)$ info?username=$1&company=$2&email=$3 [QSA]
RewriteRule ^(.*)$ info?username=$1&company=$2&email=$3 [L,QSA]
RewriteRule ^([a-zA-Z0-9-/]+)/([0-9]+)$ info?username=$1&company=$2&email=$3 [L,QSA]
RewriteRule ^([a-zA-Z0-9-/]+)/([0-9]+)$ info?username=$1&company=$2&email=$3 [QSA]

但没有任何作用。

我也试过了thisClean URLs for search query?

有人会帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

流程就是这样。

将您的表单提交至route.php

这是route.php的代码

if(isset($_GET['username']) && isset($_GET['company'])  && isset($_GET['email']) )
    $url = '/info/'.$_GET['username'].'/'.$_GET['company'].'/'.$_GET['email']
header('Location: '.$url);

在.htaccess中

RewriteRule  ^info/(.+)/(.+)/(.+)$ info.php?username=$1&company=$2&email=$3 [L,QSA]

答案 1 :(得分:0)

如果重写正常,请检查一个简单的规则。确保已启用重写模块。

 RewriteRule  ^info/(.+)/(.+)/(.+)(/*)$ info?username=$1&company=$2&email=$3 [L,QSA]