提交表单时如何实现url模式

时间:2012-05-26 06:17:55

标签: php forms .htaccess

如何在提交表单时实现URL模式

的index.php

<form name="search_form" method="get" action="search-jobs/">
Skills : <input type="text" name="skills" />
Location : <input type="text" name="loc" />
<input type="submit" name="search" value="Search" />
<br />

.htacess

RewriteRule ^search-jobs/(.*)/(.*)?.php$ findjob4.php?skills=$1&loc=$2

当提交表单时,如何实现此url / .htacess别名

模式网址

www.example.com/search-jobs/{skills value}/{loc value}.php

样品

www.example.com/search-jobs/php/london.php

当我这样做时,它会给出Object not foundError 404错误。 基本上:我如何以该格式和url结尾获得上面Pattern url的url模式 应添加.php

2 个答案:

答案 0 :(得分:1)

将其操作设置为index.php(同一页面),并将其添加到index.php的顶部:

if (isset ($_GET ['skills'])) {
    header('Location: /search-jobs/' . $_GET ["skills"] . '/' . $_GET ["loc"] . '.php');
}

<form name="search_form" method="get" action="index.php">
    Skills : <input type="text" name="skills" />
    Location : <input type="text" name="loc" />
    <input type="submit" name="search" value="Search" />
    <br />
</form>

根据Rafee,您还必须从重写网址中删除.php。

答案 1 :(得分:0)

无需修改任何PHP代码,只需将此代码放入$ DOCUMENT_ROOT / .htaccess中替换现有代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+search-jobs/?\?skills=([^&]+)&loc=([^&]+) [NC]
RewriteRule ^ search-jobs/%1/%2.php? [R=302,L]

RewriteRule ^search-jobs/([^/]*)/([^.]*)\.php$ findjob4.php?skills=$1&loc=$2 [L,QSA,NC]

在第一条规则中验证其工作更改为R=302R=301后。