我知道在 URL 重写过程中会出现很多问题,这就是为什么如果你不完全理解你在做什么,谷歌建议不要将 URL 转换为干净的 URL。
我想问一下这是否是正确的方法?
我有一个结构如下的网站:
www.example.com/index.php?widget=blue&size=10&weight=50
我正在使用 mod_rewrite 来制作它,因此可以使用干净的 URL,例如:
www.example.com/blue/10-inches/50-grams/
我已经使用以下代码完成了此操作:
RewriteEngine on
RewriteRule ^([a-zA-Z-]+)/([0-9-]+)-inches/([0-9-]+)-grams/?$ index.php? widget=$1&size=$2&weight=$3 [NC,L]
这使得这部分工作.. 但是索引页面上还有一个表单,它根据下拉框选择和按下的提交按钮更改 index.php 页面上的产品。
Dropdown 1 = blue, red, green
Dropdown 2 = 10, 20, 30
Dropdown 3 = 25, 50, 100
默认情况下,当您选择说红色、20、100 并单击提交时,您将获得像 www.example.com/index.php?widget=red&size=20&weight=100 这样的旧 URL
我怎么能在这里做重定向?我目前正在这样做:
更改<form action="index.php" method="GET">
为<form action="redirect-url.php" method="GET">
新的 redirect-url.php 将具有以下代码:
<?php
header('Location: www.example.com/'.$_GET[widget].'/'.$_GET[size].'/'.$_GET[weight].'/');
exit();
?>
这应该导致我在上面发布的 apache RewriteRule 使其工作。
想法?这行得通吗?有没有更清洁的方法?