我想要完成的是使我的url与各种额外参数兼容。
必须能够处理n个斜杠。因此,我的htaccess获取127.0.0.1/store/之后的所有内容并将重定向。php作为id发送给它。
as in
http://127.0.0.1/store/category/cars/show/1/page/2
or
http://127.0.0.1/store/category/cars/color/red/price/min/100
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^(.*)$ http://127.0.0.1/store$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ redirect.php?id=$1 [QSA,L]
在我的redirect.php中,我使用斜杠来获取脚本名称和它的参数
if($_GET['id']){
$param = explode('/', $_GET['id']);
$template = $param[0];
// header redirect -> go to category.php
}
得到
Array
(
[0] => category
[1] => electronics-computers
[2] => show
[3] => 1
[4] => page
[5] => 2
)
目前还好,然后我尝试重定向到文件这里是带参数的category。php但由于htaccess控制流量,它变成了无限重定向
我想我应该添加一些例外的htaccess不干扰请求来自重定向。php但我不能使它工作
如果有更好的方法,请告诉我然后尝试重定向到该文件在本例中是category。php
问题就在这里,你不应该在这个阶段重定向。重定向包括将重定向响应发送回客户端,然后客户端向服务器发出第二个/新的请求(这会导致重定向循环)。
如果有更好的方法,请告诉我
您需要路由请求。由于您知道所需的文件是contact.php
(在本例中),因此在服务器端读取该文件,传递所有必要的参数,并将其以相同的响应发送回客户机。