我目前有以下代码将搜索引擎友好的 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
最佳答案
试试这个:
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。
关于php - PHP 的高级 Htaccess 重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2317965/