【问题标题】:why isn't this URL rewrite working?为什么这个 URL 重写不起作用?
【发布时间】:2011-05-12 05:38:12
【问题描述】:

这是“真正的”链接:

   domain.com/show_shop.php?id=4

这是改写的:

   domain.com/show_shop/4

我使用后者是因为我的 .htaccess 中有这个:

  RewriteRule ^show_shop/([0-9_]+)$ show_shop.php?id=$1 [NC]

但由于某种原因它不起作用。这个重写不会给我想要的吗?

谢谢

编辑:

RewriteRule ^new_ad$ new_ad.php [NC] // WORKS FINE!
RewriteRule ^kategori/([0-9_]+)/([0-9]+)$ browse_cat.php?cat_gr=$1&p=$2 // WORKS FINE!

【问题讨论】:

  • 这不是一个安全问题。
  • show_shop 是行首吗?我以为是“域”。
  • 'id' 参数未传递。当我尝试像这样获取它时: $id = $_GET['id'] 我得到空值,它不存在......
  • 这肯定是由于 MultiViews。

标签: html regex .htaccess mod-rewrite


【解决方案1】:

试试:

RewriteRule ^/show_shop/([0-9_]+)$ /show_shop.php?id=$1 [NC]

此外,如果可能的话,如果您在 VirtualHost 中打开这些功能,您可以查看正在发生的事情的日志:

 #warning, slows server perf
 RewriteLog "/var/log/apache/rewrite.log"
 RewriteLogLevel 9

【讨论】:

  • 啊,没注意到.htaccess
【解决方案2】:

如果调用了show_shop,但没有设置URL参数,可能是MultiViews造成的。尝试禁用它。

【讨论】:

  • Gumbo,再次检查我的编辑,如果是多视图,请告诉我如何关闭它...
  • @Camran:点击提供的链接:“MultiViews [...] 可以在 .htaccess 文件中使用 Options 指令 [...] 进行设置。”
猜你喜欢
  • 2012-04-28
  • 2014-10-24
  • 2010-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-11
  • 2017-01-13
相关资源
最近更新 更多