Php 使用SQL表变量的智能URL

Php 使用SQL表变量的智能URL,php,sql,apache,mod-rewrite,Php,Sql,Apache,Mod Rewrite,我想知道是否有可能通过在PHP网站中通过Apace mod rewrite传递SQL变量的值来生成智能URL 谢谢 这是一个适用于 /Customer/Detail/1234 并将其映射到 /Customer/Detail.php?ID=1234 RewriteEngine on RewriteRule ^/Customer/Detail/([0-9]+)$ /Customer/Detail.php?ID=$1 你可能想考虑一个好的MVC框架除了其他原因之外,除了自动化这个。 当然你可以做

我想知道是否有可能通过在PHP网站中通过Apace mod rewrite传递SQL变量的值来生成智能URL


谢谢

这是一个适用于
/Customer/Detail/1234

并将其映射到
/Customer/Detail.php?ID=1234

RewriteEngine on
RewriteRule ^/Customer/Detail/([0-9]+)$  /Customer/Detail.php?ID=$1 

<>你可能想考虑一个好的MVC框架除了其他原因之外,除了自动化这个。

当然你可以做到这一点!您需要获得一个带有“slug”的表,该表连接到“丑陋”的URL。一个包含列“slug”(索引)和“丑陋的url”的表可能就可以了

修改:

RewriteEngine on RewriteRule ^/[a-zA-Z0-9-_]+$ redirect.php?slug=$1 重新启动发动机 重写规则^/[a-zA-Z0-9-\]+$redirect.php?slug=$1 redirect.php:

// You'll need to find out to wich ugly URL this Slug belongs to. // Connect to your database ... $slug = mysql_real_escape ( (string)$_GET['slug'] ); if ( empty ( $slug ) ) die ( 'Page not found.' ); $query = mysql_query ( "SELECT `ugly_url` FROM `slugs` WHERE `slug` = $slug LIMIT 1" ); if ( !$query ) die ( 'Page not found.' ); $fetch = mysql_fetch_array ( $query ); $ugly_url = $fetch['ugly_url']; header ( "Location: $ugly_url" ); //你需要找出这个鼻涕虫属于哪个丑陋的URL。 //连接到您的数据库。。。 $slug=mysql\u real\u escape((字符串)$\u GET['slug']); if(空($slug)) 模具('未找到页面'); $query=mysql\u query(“从`slug`中选择`ught\u url`,其中`slug`=$slug LIMIT 1”); 如果(!$query) 模具('未找到页面'); $fetch=mysql\u fetch\u数组($query); $aughous_url=$fetch['aughous_url']; 标题(“位置:$ught_url”);
你的意思是mod_rewrite正在查询数据库以生成URL吗?是的,例如,我以友好方式生成了以下URL(),但我想生成这样一个URL,其中“red car”是表Product中变量pd_name的内容我知道如何通过post方法在URL中传递变量,但是,不在URL中传递变量是否可能?这是正常工作还是我必须手动将每个丑陋的URL与其slug链接?您需要为每个丑陋的URL应用slug。但是,如果表中已经有一个字段要用作slug,那么当然也可以使用它!我很抱歉,但我不认为这真的会成为我所寻找的,我仍然会得到这样的url结构/redirect.php?slug=red car,当我想要它看起来像/red car时,对吗?
mod_rewrite
-部分实际上不应该导致HTTP重定向(除非你强制它),但是是的,
头()
-PHP中的函数调用执行HTTP重定向,这将强制更改URL。。。也许你可以考虑在PHP中使用
include
而不是
header()
?谢谢你的helo Andre,但我认为在没有include的情况下,必须有一种更简单的方法来实现这一点,更直接的方法。。。