【问题标题】:mod_rewrite /p/about => ?p=about [duplicate]mod_rewrite /p/about => ?p=about [重复]
【发布时间】:2012-04-17 15:47:27
【问题描述】:

我有一个关于 mod_rewrite 的具体问题:

当用户调用时:

www.test.com/p/about

网络服务器应该在内部调用

www.test.com/?p=about

访问网站的子页面。

但在地址栏中仍应显示

www.test.com/p/about

用 mod_rewrite 有可能吗?

我没有成功的解决方案:

  1. 试试

    重写规则 ^/?([-a-zA-Z0-9_+]+)$ index.php?p=$1 [L]

错误的效果,因为它只适用于:test.com/about,但我需要 test.com/p/about!

  1. 试试

    重写规则 ^p/([a-zA-Z]+)$ index.php?p=$1

错误:它重定向正确,但 html 文件上的路径错误:例如。 /img/pic.png 现在是 /p/img/pic.png

非常感谢, 钢

【问题讨论】:

  • 你检查过右边栏中几乎相同的问题吗?
  • 是的,这是可能的,事实上这是您可以使用mod_rewrite 做的最基本的事情之一——您自己尝试了吗?到目前为止,您尝试过什么?
  • 或者,正如其他人所说 - 检查右侧的重复项 :)
  • 是的,我尝试了很多可能性,我可以告诉你,这并不像听起来那么容易。编辑了我对最初没有成功的帖子的解决方案。
  • 还有什么想法吗?我真的在努力解决这个问题,非常感谢任何帮助!

标签: php mod-rewrite


【解决方案1】:

是的,这可以通过 mod_rewrite 实现:

RewriteRule ^p/([a-zA-Z]+)$ index.php?p=$1

或者,更一般地说:

RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)$ index.php?$1=$2

见:http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

【讨论】:

  • 抱歉,这确实将我重定向到 test.php?p=about 但地址栏中的地址也更改为 test.php?p=about b> 这就是我想要避免的!所以它并不像听起来那么简单!
  • 这条规则对我来说很好 - 你重定向的 PHP 脚本是做什么的?
  • 它是一个显示相应子页面的索引 php 文件,在这种情况下是关于页面。
猜你喜欢
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 2017-02-22
相关资源
最近更新 更多