0

我正在尝试为我的网站制作一些更清晰的 URL。我已经发现了很多关于删除 URL 中的文件扩展名的问题,并设法让它发挥作用。我想通过将http://www.site.com/news.php?id=1之类的 URL 转换为http://www.site.com/news/1/更进一步。我找不到这个特定问题的答案,所以我在这里问。我怎样才能实现这样的 URL?

重写我已经在我的 htaccess 中拥有的规则:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)?$ $1.php
4

1 回答 1

0

有很多问题可以回答您的问题。您必须做两件事:

  1. 将丑陋的url重定向到花哨的url,让用户看到花哨的url
  2. 内部将花哨的 url 改写成丑陋的 url,让服务器真正执行。

您可以在此处找到 mod_rewrite 的文档。此解决方案使用[END]仅在 Apache 2.3.9 及更高版本中可用的标志。您可以在此处找到文档。第一条规则中的尾随?丢弃查询字符串。

#Redirect ugly url to fancy url
RewriteCond %{QUERY_STRING} id=([^&]*)
RewriteRule ^news\.php$ news/%1/? [R]

#Internally rewrite fancy url to a usable url
RewriteRule ^news/([^/]*)/?$ news.php?id=$1 [END]
于 2013-07-25T18:59:53.090 回答