在.htaccess文件中重写查询字符串URL的条件

时间:2013-10-16 08:30:32

标签: php regex apache .htaccess mod-rewrite

我对.htaccess文件不太了解, 无论如何,我发现代码如下所示:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
</IfModule>

我将表格值从index.php页面发布到pagedata.php,如下所示:

<!-- index.php page -->
<form name="testform" id="testform" method="post" action="pagedata">
<input type="text" name="firstname">
<input type="text" name="age">
<input type="text" name="city">
</form>

然后数据显得很好......但现在我需要更改post方法以获取方法。

如果我使用get方法提交表单,则URL如下, http://example.com/pagedata.php?firstname=test&age=26&city=somecity

但我需要转换上面的URL如下, http://example.com/pagedata/test/26/somecity

怎么做...?请建议。

2 个答案:

答案 0 :(得分:0)

有一个额外的规则:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(pagedata)\.php\?firstname=([^&]*)&age=([^&]*)&city=([^\s&]*) [NC]
RewriteRule ^ /%1/%2/%3/%4? [R=301,L]

RewriteRule ^(pagedata)/([^/]*)/([^/]*)/([^/]*)/?$ /$1.php?firstname=$2&age=$3&city=$4 [QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]
</IfModule>

推荐阅读:Apache mod_rewrite Introduction

答案 1 :(得分:0)

使用mod_rewrite

创建人性化的URL

这可以帮助您通过以下方式转换www.site.ru/product.php?id=123 www.site.ru/product/123:

RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]