【问题标题】:redirecting all files in a directory to fetch ?id=重定向目录中的所有文件以获取 ?id=
【发布时间】:2017-06-23 04:57:53
【问题描述】:

我的 htaccess 中有这个

 RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php 

这对于重定向示例中的所有文件非常有用: login.php 到 /login 或 apply.php 到 /apply

现在如何从目录中的所有文件中获取 ID 以重定向示例:

RewriteRule ^home/([A-Za-z0-9-]+)/?$ home.php?id=$1 [NC,L]
RewriteRule ^home/([A-Za-z0-9-]+)/home/?$ home.php?id=$1 [NC,L]

这需要 home.php?id=72 并将其重定向到 /home/72 -(这是我想要实现的,但对于所有文件)

但目前我必须在我的 htaccess 中为每个查询 id=$ 的文件添加相同的 2 行。

任何帮助将不胜感激。

【问题讨论】:

  • 这令人印象深刻。您正在使用为您的“id”使用匹配模式的重写规则,但您无法将相同的逻辑应用于文件名库?即使有很多这样的例子,你也不能在 SO 上看到?会不会是你并不真正了解自己的规则是如何运作的?如果是这样,那就帮自己一个忙,找出答案!您需要了解自己在做什么!
  • 感谢您的鼓励。每个人都必须在某个地方学习,而我不是专家,这就是我参加论坛的原因。但很高兴知道我可以在我挣扎的任何时候依靠你,感谢你抽出时间发表评论(y)和平兄弟
  • 您似乎对我的评论感到沮丧。这也很有趣。因为你绝不会参考它的实际内容,我给你的建设性提示。当然,每个人都必须学习,我们一直都在这样做。但我们主要是通过查看我们已经拥有的东西并尝试将相同的东西应用于新任务来做到这一点。你的问题表明没有这样的努力。您只需要求复制的解决方案。请阅读这里要问的问题以及要问的先决条件:一个主要的条件是你必须尝试自己并在你的问题中表现出这种努力。你没有。

标签: php .htaccess redirect url-rewriting


【解决方案1】:

我假设您正在重写尝试以下规则,

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([\w-]+)$ $1.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/([\w-]+)$ $1.php?id=$2 [QSA,NC,L]

【讨论】:

  • 请尝试编辑并删除/评论您之前的规则。
  • 非常感谢您的帮助,但仍然无法正常工作。我现在仍然可以访问附加的网址,但在访问 ?id= 时收到 500 错误:(
  • 好的,我想我误解了您的原始网址是什么,您需要的网址是什么,请在评论中回复?
  • 您输入的内容似乎是正确的,但它不起作用。我的 url 将是 applications.php?id=72 上面的代码我可以访问 /applications 但是当我转到 /applications/72 时出现 500 错误 - 这有意义吗?
  • 我已经再次编辑了我的规则,我也会在我这边检查它,直到那时请在您的本地设置中尝试它。
猜你喜欢
  • 2010-10-06
  • 1970-01-01
  • 2020-08-29
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 2013-04-07
相关资源
最近更新 更多