[英]how to make href while using htaccess rewrite for dynamic url
我想使用.htaccess文件制作友好的URL。 但是当我单击href中指定的链接时
<a href="category.php?id= <?php echo "{$row['name']}"; ?>">Example </a>
$row['name']
是动态的。 数据存在于MySQL数据库中。
代码(category.php):
<?php
if($_GET['id']){
$result = $_GET['id'];
}
echo "this is {$result} page";
?>
这只是将传递的参数存储在$result
变量中,并将其显示在屏幕上。
代码(.HTACCESS文件):
Options -Multiviews
RewriteEngine On
RewriteRule ^website/(.+)$ category.php?id=$1
当我单击链接时,它显示的网址是http://mydomain.com/category.php?id=Rohit
而不是http://mydomain.com/website/rohit
。
但是,当我手动将URL写入http://mydomain.com/website/rohit
它会显示同一页面。 这表明.htaccess文件正在工作。 我想在单击单词示例时直接显示上述URL。
一个例子
当我们单击Wikipedia中的barack obama页面时,它会转到http://en.wikipedia.org/wiki/Barack_obama
但原始链接也可以使用-http: http://en.wikipedia.org/w/index.php?title=Barack_obama
。 两个页面都显示相同的数据。 它们不会向用户显示第二个URL,而是向用户显示第二个URL。 我想要达到同样的结果。
如何编写链接以便重写URL?
更改
<a href="category.php?id= <?php echo "{$row['name']}"; ?>">Example </a>
至
<a href="website/<?php echo "{$row['name']}"; ?>">Example </a>
可以使用apache mode_rewrite和mod_replace来做到这一点,但我不建议这样做。 因为我猜您想同时支持这两种方式,并且您正在使用PHP,所以我将创建一个函数(或类/方法)来重写您编写的url。 即:
<a href="<?php getUrl('category.php', $row['name']}) ?>">Example</a>
这样,可以根据用户请求处理不同的URL。
function getUrl($phpfile, $argument) {
if ('<some logic to check if user request is rewritten') {
return "website/" . $argument;
} else {
return $phpfile . "?id=" . $argument;
}
}
如果您使用的是网址重写,那么在href中您必须自己传递SEO友好的网址; 为了获得最佳实践,请创建一个通用函数并将您的参数传递给该函数,并为href生成SEO友好的url;
或代替在href硬代码href网址(例如website / 123)中创建类似category.php?id = 123的网址
或者您必须定义规则,例如,如果用户访问您的页面,例如category.php?id = 123,然后将用户重定向到website / 123
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.