如何使用“.htaccess”重新编写带有2个参数的链接?

时间:2016-08-26 00:52:05

标签: php apache .htaccess url-rewriting

我有这个网站,结构如下:http://example.com/dir/index.php?first=12&second=16。现在,我想将此链接编辑为:http://example.com/dir/12/16

所以,我在.htaccess中添加http://example.com/dir/;有内容:

RewriteEngine On
RewriteRule ^([0-9]+)$ ?first=(\d+)&second=(\d+)

我使用这个简单的PHP进行检查,它位于http://example.com/dir/

<?php

/* ... */

echo $_GET['first'] . ' - ' . $_GET['second'];

/* ... */

?>

当我转到http://example.com/dir/1/2时,它会返回:404。所以,我的.htaccess并不能正常使用。

我的.htaccess有什么问题?

2 个答案:

答案 0 :(得分:1)

您需要为RewriteRule模式使用2个捕获gropus,否则将不会有第二个变量,即$2

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^dir/([0-9]+)/([0-9]+)/?$ /dir/index.php?month=$1&day=$2 [L]

答案 1 :(得分:0)

将此.htaccess放入http://example.com/dir/

RewriteEngine On
RewriteRule ^([0-9]+)/([0-9]+)/?$ ?first=$1&second=$2

很简单。