我得到了这两个网址:
/组合/ 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
答案 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”