我想使用.htaccess文件来制作友好的网址。但是当我点击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。
一个例子
当我们点击维基百科中的页面barack obama时,它会转到http://en.wikipedia.org/wiki/Barack_obama
,但原始链接也可以使用http://en.wikipedia.org/w/index.php?title=Barack_obama
。两个页面都显示相同的数据。
它们不会向用户显示第二个URL,而是显示另一个URL。我希望得到同样的结果。
如何编写链接,以便重写URL?
答案 0 :(得分:2)
更改
<a href="category.php?id= <?php echo "{$row['name']}"; ?>">Example </a>
到
<a href="website/<?php echo "{$row['name']}"; ?>">Example </a>
答案 1 :(得分:2)
使用apache mode_rewrite和mod_replace可以做到这一点,但我不推荐它。因为我想你想以两种方式支持它而你使用PHP我会创建一个函数(或类/方法)来重写你的书面网址。 即:
<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;
}
}
答案 2 :(得分:0)
如果您正在使用网址重写,那么在href中您必须自己传递SEO友好网址;为了最佳实践创建一个共同的功能,并将您的参数传递给该函数,并为href生成SEO友好的URL;
或者代替创建类似于category.php的网址?id = 123 in href hardcode href url like website / 123
或者您必须定义规则,例如,如果用户访问您的网页,例如category.php?id = 123,然后将用户重定向到网站/ 123