URL 替换我内容中 <h3> 标记值的 .php?id=1 扩展名

Posted

技术标签:

【中文标题】URL 替换我内容中 <h3> 标记值的 .php?id=1 扩展名【英文标题】:URL replace .php?id=1 extension for a <h3> tag value from my content 【发布时间】:2014-11-19 07:59:32 【问题描述】:

相当难的问题。

我有一些网址扩展名为 .php?id=1、.php?id=2、.php?id=34 等的网页。

现在我已经访问了所有这些页面,&lt;h3&gt; 包含一些文本。 我想用这个文本代替 .php?id=4(i.e.) 扩展名。

我想知道如何才能做到这一点。欢迎任何帮助! :)

红色必须替换为绿色,用斜线分隔。

到目前为止我的 .htaccess 代码:

RewriteEngine on
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME.html -f
RewriteRule ^(.*)$ $1.html

RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^(.*)$ projecten-functioneel.php?args=$1 [QSA,L]

【问题讨论】:

if ($some_condition) do_something(); 条件/情况由你决定 您能举一些直观的例子来说明您要达到的目标吗? 你需要这个***.com/questions/16388959/url-rewriting-with-php @AlejandroArbiza 我更新了 ;) 我想你正在寻找 seo 友好的网址。类似 somesite.com/Inventory/detail/22340 您可以设置 apache 来执行 [mod_rewrite][1]。然后安装一个像 [panique][2] 这样的骨架框架来处理路由。 [1]:httpd.apache.org/docs/current/mod/mod_rewrite.html [2]:github.com/panique/php-mvc 【参考方案1】:

请看一下这个配置

RewriteEngine on
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME.html -f
RewriteRule ^(.*)$ $1.html [L]
RewriteRule ^projecten-functioneel/(.*)$ projecten-functioneel.php?title=$1 [L]

前四行是您的原始设置,唯一添加的是重写规则末尾的标志 L。如果第一个匹配规则,这将阻止评估第二个重写规则。

最后一行是处理 projecten-functioneel 页面请求的行。

工作原理

如果网址是

site.com/projecten-functioneel/some_title

请求将被重写为

site.com/projecten-functioneel.php?title=some_title  

然后在您的projecten-functioneel.php 文件中,您必须请求$_GET['title'],在本例中为some_title

【讨论】:

当我将提供的代码粘贴到您的线程上时,将 RewriteRule ^(.*)$ index.php?args=$1 [QSA,L] 更改为 RewriteRule ^(.*)$ projecten-functioneel。 php?args=$1 [QSA,L] 没有什么真正改变... 怎么样,if(URL == '?id=1') then (URL -> '/afdekbanden');顺便说一句,我编写了这段代码.. 哦不,这不是它应该去的地方。根据您的评论,我认为您不熟悉 .htaccess;在这种情况下,我建议格外小心:请为您修改的每个文件制作备份副本,以便在出现任何问题时将所有内容恢复原状。 感谢您的备份提示。我不使用数据库犯了一个大错误,所以我将无法使用任何 SQL。所以,现在我试图通过从页面中选择一个

标题并将 ?id= 替换为该特定标题来解决问题,如主要问题中所述。猜猜这是不可能的。

addedbytes.com/articles/for-beginners/… 他们谈论的第一部分,称为“什么是 URL 重写”,正是我所需要的。他们没有解释如何实现它【参考方案2】:

可能(至少)需要对projecten-functioneel.php 进行两项更改。

1) 它将需要更改其对文章的查询,以通过标签中的关键字查找它们;

例如,您今天可能有如下代码:

$stmt = $db->prepare("SELECT * FROM articles WHERE id=?");
$stmt->execute(array($_GET['id']));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

您需要将其更改为如下所示:

$stmt = $db->prepare("SELECT * FROM articles WHERE title=?");
$pathinfo = explode('/', $_SERVER['PATH_INFO']);
$stmt->execute(array($pathinfo[0]));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

2) 您需要更改链接的编写方式,以便将来生成与此行为一致的链接。

假设是这样的:

$stmt = $db->prepare("SELECT id, title FROM articles");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row) 
    echo '<a href="/projecten-functioneel.php?id=', $row->id, '">', $row->title, '</a>';

类似于:

$stmt = $db->prepare("SELECT title FROM articles");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row) 
    echo '<a href="/projecten-functioneel.php/', $row->title, '">', $row->title, '</a>';

【讨论】:

以上是关于URL 替换我内容中 <h3> 标记值的 .php?id=1 扩展名的主要内容,如果未能解决你的问题,请参考以下文章

数组值中的 HTML 标记

尝试用从中剥离的 URL 替换 HTML <a> 标记时,我的 Ruby 代码中的 gsub 方法出现问题

用破折号替换 URL 中的空格

解析 .erb 文件并返回字符串/Ruby 标记中的所有内容

PHP - 字符串 - 删除具有特定类的 HTML 标记,包括其内容

nginx URL重写(rewrite)