.htaccess包含用户友好网址的变量

时间:2012-04-03 21:15:19

标签: .htaccess

我得到了这两个网址:

/组合/ stamped_concrete

/p_details.php?id_cat=23&?id=91

我想让第二个网址重写为: /组合/ stamped_concrete /91分之23

stamped_concrete是一个动态网址,这就是为什么我不知道如何解决这个问题。如果重要的话,这两个文件(portfolio.php和p_details.php)也在同一个目录中。

我将如何做到这一点?

修改

stamped_concrete也是我之前重写的变量字符串,它起作用:

RewriteRule ^services/([a-z0-9_-]+)$    /services.php?url=$1    [NC,L,QSA]

那么如何在RewriteRule中调用它?

这会走上正轨吗?

RewriteCond %{QUERY_STRING} url=([a-z0-9_-]+)
RewriteCond %{QUERY_STRING} id_cat=([0-9]+)
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule /p_details.php?.* /portfolio/$1/$2/$3

1 个答案:

答案 0 :(得分:0)

试试这个:

RewriteCond %{QUERY_STRING} id_cat=([0-9]+)
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule /p_details.php?.* /portfolio/stamped_concrete/$1/$2

可能需要调整一下 - 不确定RewriteRule部分是否正确(抱歉)。

但是,重要的部分是QUERY_STRING,请参阅apache docs:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

此外,来自http://wiki.apache.org/httpd/RewriteQueryString

我总是混淆反向引用,所以试一试,这是美元符号或百分号(我真的认为这是美元符号......)

(报价)

使查询字符串成为路径的一部分

获取http://example.com/path?var=val表单的网址,并将其转换为http://example.com/path/var/val。请注意,此特定示例仅适用于仅包含字母,数字和下划线字符的单个var = val对。

RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^/path /path/%1/%2?

(结束语)

所以你可以说“RewriteRule ^ / p_details.php / portfolio /%1 /%2 /%3”