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 等的网页。
现在我已经访问了所有这些页面,<h3>
包含一些文本。
我想用这个文本代替 .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 扩展名的主要内容,如果未能解决你的问题,请参考以下文章
尝试用从中剥离的 URL 替换 HTML <a> 标记时,我的 Ruby 代码中的 gsub 方法出现问题
解析 .erb 文件并返回字符串/Ruby 标记中的所有内容