【发布时间】:2018-03-19 12:28:30
【问题描述】:
我的网页需要多种 url 重写方法。 我可以使用 PHP 和 htaccess 重写一个 url: index.php 页面代码 PHP代码:
$retvalue=$_POST["packagestring"];
$_SESSION["package_string"] = $retvalue;
header("location:package/".php_slug($retvalue)."");
}
function php_slug($string)
{
list($packageid, $packagename) = explode(":",$string);
$url = $packageid."/".strtolower(str_replace(' ', '-', $packagename));
$slug = preg_replace('/[^a-z0-9-]+/', '-', trim(strtolower($url)));
return $url;
}
当我点击按钮时,通过 index 页面的 post 方法,我跳转到带有 url 的包页面: http://localhost/xyz/package/2/temp-temp-temp
因为这个包页面包含一个提交按钮,当我点击这个 usbmuit 按钮时,我想用下面的 url 转到 book_package 页面:
http://localhost/xyz/book_package/2/temp-temp-temp
但我得到了 http://localhost/xyz/package/2/book_package.php
这是带有 url 而不是第二个 url 的工作 htaccess 文件
RewriteEngine On
RewriteRule ^(.+)/(admin|css|fonts|ico|include|js|images)/(.*)$ $1
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^package/([a-zA-Z0-9-/]+)$ package.php?packagestring=$1
RewriteRule ^package/([a-zA-Z-0-9-]+)/ package.php?packagestring=$1
RewriteRule ^xyz/(css|js|img)/(.*)?$ /$1 [L,QSA,R=301]
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^book_package/([a-zA-Z0-9-/]+)$ book_package.php?booknow=$1
RewriteRule ^book_package/([a-zA-Z-0-9-]+)/ book_package.php?booknow=$1
RewriteRule ^xyz/(css|js|img)/(.*)?$ /$1 [L,QSA,R=301]
下面是url重写的包页面代码:
if(!isset($_GET["packagestring"])){
header('location:index.php');
}elseif(isset($_GET["packagestring"])) {
$getpackage = $_GET["packagestring"];
}
函数 php_slug($string)
{
list($packageid, $packagename) = explode(":",$string);
$url = $packageid."/".strtolower(str_replace(' ', '-', $packagename));
$slug = preg_replace('/[^a-z0-9-]+/', '-', trim(strtolower($url)));
返回 $url;
}
if(isset($_POST["booknow"])){
$retvalue=$_POST["booknow"];
var_dump($retvalue);
header("location:book_package.php");
}
任何人都建议我如何实现这一点
【问题讨论】:
-
非常不清楚你在问什么,分别。你甚至想在这里实现什么。您在谈论 POST 请求 - 请不要说您将它们用于实际的页面导航(应该通过 GET 发生)......?这需要从哪里开始重写,这听起来好像您根本没有指定您正确提交的表单的
action......? -
或者您是在谈论您在处理发送 POST 数据后所做的重定向?那么在其中指定 正确的 URL,而不是仅使用
header("location:book_package.php")...? -
我在发布索引和包页面后制作 url。当我单击索引页面的按钮时,我跳转到具有准确 URL 为 localhost/xyz/package/2/temp-temp-temp 的包页面当我单击包页面的按钮时,我想跳转到 URL 为 localhost/xyz/book_package/2/temp-temp-temp 的 book_package 页面,这不会发生吗?我得到的网址是:localhost/xyz/package/2/book_package.php我想现在很清楚,如果不是请亲密我
-
不,没有比以前更清楚了。 “我在发布索引和包页面后创建 url” - 不知道这是什么意思。 “当我点击索引页面的按钮时,我会跳转到具有准确 url 作为 localhost/xyz/package/2/temp-temp-temp 的包页面” - 以及“跳转”那里的目的是什么?如果您只是希望用户在第一步中切换到不同的页面,那么为什么这是一个 POST 表单(?)开始 - 为什么您没有为 this 使用正确的链接? “我将 url 获取为:” - 再次,很可能是因为您在此位置开始时指定了错误的相对 URL。