1

我得到了这两个网址:

/portfolio/stamped_concrete

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

我想让第二个 url 重写为:/portfolio/stamped_concrete/23/91

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
4

1 回答 1

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 文档:http ://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

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

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

(引用)

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

获取http://example.com/path?var=val形式的 URL并将其转换为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”

于 2012-04-03T21:52:35.343 回答