【问题标题】:.htaccess Rewrite Url?.htaccess 重写网址?
【发布时间】:2014-01-06 16:02:41
【问题描述】:

我有一个动态 php 站点,时间变量存储在 url 中,我不希望它们被看到。例如原始网址:http://www.example.com/root_new/news.php?id_new=9 现在我想将此网址更改为http://www.example.com/root_new/news

我最初尝试使用纯 PHP 来实现这一点,但做了一些研究,发现实现这一目标的最佳方法是通过 .htaccess,它是一个无论如何控制 Apatch 服务器的配置文件......

我对此不太擅长,但设法在 my.htaccess 中编写了一个我认为应该可以解决问题的代码,但事实并非如此

.ht 访问代码:

RewriteEngine on
 



RewriteRule ^news/([^/.]+)/?$ news.php?id_new=$1 [L]

当然,这个文件在我的根目录中,index.php 和其余页面都在其中。

有人可以建议我想要实现的目标的解决方案,或者告诉我我的 .htaccess 命令哪里出了问题。

【问题讨论】:

  • on RewriteRule 应该是RewriteRule
  • 对不起,我把代码粘贴错了,现在罚款了

标签: apache .htaccess mod-rewrite


【解决方案1】:
RewriteEngine On
RewriteRule  ....

现在的问题是,如果您需要将值“9”传递给 id_new,它必须是原始 SEO 格式的 URI,或者您必须进行包含它的硬编码重写。它不会凭空出现。

RewriteEngine On
RewriteRule  ^news/([^/.]+)/?$ news.php?id_new=$1

如果传入的 URI 是 /news/9/(最后一个 / 是可选的),它将起作用。虽然比动态版本更容易键入,但用户仍然必须记住“9”。它还会尝试将您发送到任何目录中的“news.php”,而不是/news.php(确保这是您想要做的)。

您不需要[L],因为您没有RewriteCond 子句。请注意,由于您提供的是查询字符串,因此原始 URI 中的任何传入查询字符串都将被丢弃(除非您添加 [QSA] 标志)。

【讨论】:

  • 谢谢你的回答,现在当然 9 不是空出来的,它是存储在数据库中的文章的 id 号,正如我提到的,我从来没有这样做过,我从不担心我的 URL 很清楚,但是因为我发布了它对 SEO 的重要性,并且这是我对网站的要求,我正在尝试解决这个问题,你能否给我一个链接,我可以在某个地方阅读到这个链接,这个地方解释得很好。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-23
  • 2016-10-29
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多