我想要完成的是让我的网址与各种额外的参数兼容。
它必须能够使用n个斜杠。所以我的htaccess在127.0.0.1/store/之后获取所有内容并将其作为id发送给redirect.php。
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添加一些例外,以免干扰来自redirect.php的请求,但我无法使其正常工作
ps:如果有更好的方法,请告诉我
答案 0 :(得分:0)
然后我尝试重定向到此示例中的category.php文件
嗯,那就是,你不应该重定向这个阶段。重定向涉及将重定向响应发送回客户端,然后客户端将第二个/新请求发送回服务器(这会导致重定向循环)。
如果有更好的方法,请告诉我
您需要路由请求。由于您知道所需文件为contact.php
(在此示例中),因此请读取此文件服务器端,传递所有必需参数并将其在同一响应中发送回客户端。