【问题标题】:php dynamic URL rewrite with a form submit to clean URLphp 动态 URL 重写与表单提交到干净的 URL
【发布时间】:2013-04-24 23:36:00
【问题描述】:

我知道在 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 并单击提交时,您将获得旧 URL,例如 www.example.com/index.php?widget=red&size=20&weight=100

我如何在此处进行重定向?我目前正在这样做:

<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 使其工作。

想法?这行得通吗?有没有更清洁的方法?

【问题讨论】:

    标签: php forms url redirect


    【解决方案1】:

    通常您在提交表单时不会使用 url_rewrite,因为没有默认的方式来构建 url。有两种解决方法。首先就像您说的那样,使用中间页面获取表单值并将标题重定向到 url 重写页面。其次是使用 javascript 来构建重写 url 并去那里。我建议两者都做。默认情况下,让表单提交到将执行重定向的页面。然后在表单上,​​使用 javascript 并添加一个 onsubmit 事件,该事件将获取值并将表单的操作更改为重定向页面。这样,如果启用了 javascript,则不会出现不必要的重定向,如果禁用了 javascript,您仍然可以将重定向页面作为后备。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      相关资源
      最近更新 更多