PHP的高级Htaccess重写规则

时间:2010-02-23 12:15:35

标签: php .htaccess mod-rewrite

我目前有以下代码来重写搜索引擎友好的URL到PHP可以处理的东西,但是有一些问题。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)/(.*) index.php?$1/$2

这会将domain.com/cat/mens/size/large/重写为domain.com/index.php?cat/mens/size/large/


如果我可以使用不同数量的子目录(例如对PHP代码更友好的子目录)将其重写为类似的东西,那将是理想的:

理想重写:domain.com/index.php?cat=mens&size=large

另一个例子:domain.com/page/value/subpage/subvalue/something/true/

应重写为:domain.com/index.php?page=value&subpage=subvalue&something=true


还有一种方法可以重写:domain.com/search/?q=blah+blah

收件人:domain.com/index.php?search&q=blah+blah

1 个答案:

答案 0 :(得分:2)

试试这个:

RewriteRule /page/(.*)/subpage/(.*)/something/(.*) index.php?page=$1&subpage=$2&something=$3

当url中的变量数量未预定义时,最好将其作为字符串传递给php,并让它处理它(爆炸,内爆,foreach,构建数组)。

RewriteRule /search/?q=(.*) index.php?search&q=$1

至于你在下面要求的内容:

RewriteRule /cat/(.*)/size/(.*)/?q=(.*)&abc=(.*) index.php?search&cat=$1&size=$2&q=$3&abc=$4

基本上,RewriteRule的第一部分是给定的url,第二部分是转到脚本的部分。变量中第一个中的每个(somethingInHere),你可以在第二个变量中使用它,如$ 1,$ 2,$ 3和$ 4.