如何重写传递了id和title的url

时间:2015-12-27 14:52:41

标签: .htaccess rewrite

基本上,我想要的是:

例如,我有一个如下所示的网址:

example.com/stories/show.php?id=$id

我希望该网址看起来像这样

example.com/stories/$id/$title

我希望标题看起来像这样:

我喜欢stackoverflow

I-爱计算器

用短划线分隔每个单词。

我是否应该将标题与ID一起传递?

例如 example.com/stories/show.php?id=$id&title=$title

我如何用.htaccess实现这一切?

stackoverflow使用了我想要做的一个很好的例子。检查这个问题的URL。

1 个答案:

答案 0 :(得分:1)

您只需要一些简单的规则,例如下面的示例

RewriteEngine on
# rewrite stories/<id>/<title> to show.php
RewriteCond %{REQUEST_URI} stories/([0-9]+)/([a-z\-A-Z]+)
RewriteRule (.*) show.php?id=%1&title=%2 [L]

将上述文件放在.htaccess文件中,该文件应位于stories文件夹下。当然,您还需要确保在服务器上启用rewrite模块。这可以通过从终端运行以下命令来完成:

sudo a2enmod rewrite
sudo apachectl restart

现在你应该可以重写一个网址:

http://example.com/stories/666/stack-overflow

为:

http://example.com/stories/show.php?id=666&title=stack-overflow

然后您可以通过以下方式创建链接:

<?php
// php example
$title = "I love stackoverflow";
$id = 666;
?>
<a href="http://example.com/stories/<?php print $id . '/' . str_replace(' ', '-', $title); ?>">link</a>

我认为你应该读一下url重写是如何工作的,这里有几个可能有用的链接:

URL Rewriting for Beginners
URL Rewriting Guide