【问题标题】:.htaccess spits our full URL rewritten URL on folder name.htaccess 在文件夹名称上吐出我们的完整 URL 重写 URL
【发布时间】:2015-08-10 06:49:42
【问题描述】:

我有以下 .htaccess:

RewriteEngine On
RewriteBase /sandbox/

RewriteRule ^(assets)($|/) - [L]

RewriteRule ^(.*)$ lib/script/bootstrap.php?route=$1.php [NC,L,QSA]

我正在做的是将所有请求(除了我的资产 - img、css、js)重定向到我的引导脚本,该脚本将通过 route 参数处理请求,其中包括 URL 请求.

这在大多数情况下都可以正常工作,除非我有电话,例如:

http://www.example.com/sandbox/admin,其中 admin 是存在于我的目录以及其他文件夹中的文件夹。该文件夹包含各种可访问的页面,以及一个 index.php 文件,默认情况下,我的 bootstrap.php 路由会将来自上述 URL 的请求重定向到该文件。

我的问题是,当我尝试点击页面时:http://www.example.com/sandbox/admin,我的 htaccess(据我所知)正在将可见 URL 重写为 http://www.example.com/sandbox/admin/?route=admin.php,这不是那么漂亮。我相信这是因为上面的 URL 是指向我的 /admin/ 文件夹的有效 URL 的事实存在一些冲突,但我希望我的 .htaccess 忽略这一点并将其发送到我的 bootstrap.php(第 4 行)我的.htaccess)。我做错了什么?

这是来自我的浏览器的请求:

更新:

奇怪的是,http://www.example.com/sandbox/admin/ 可以正常工作,但 http://www.example.com/sandbox/admin 却不行(注意尾部的斜杠)。

【问题讨论】:

  • 您的规则似乎不会导致这种情况,但您的浏览器可能正在缓存较早的尝试。在私人/隐身窗口或其他浏览器中尝试一下。你有同样的行为吗?如果没有 [R] 或其他域,我看不到您的规则将如何导致完整的浏览器重定向。
  • 是的,似乎仍然在 icognito 中这样做;还尝试重新启动我的服务器。那么在我的浏览器中被重写的 URL 只能由重定向引起?
  • 是的 - 如果您查看浏览器的网络控制台,您应该会看到它首先请求 /sandbox/admin,然后通过 301 或 302 重定向到 /sandbox/admin/route=admin.php。您在 .htaccess 中还有其他内容吗?还是您发布了所有内容?
  • 这就是我所有的 .htaccess。我将添加我在控制台中看到的内容,我相信我看到的正是您所描述的内容。

标签: php apache .htaccess mod-rewrite


【解决方案1】:

如果你有真正的文件夹,你需要使用一个条件来忽略real 文件和文件夹。所有其他请求将被路由到您的引导文件。 (如果我正确理解您的问题。)

RewriteEngine On
RewriteBase /sandbox/

RewriteRule ^(assets)($|/) - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ lib/script/bootstrap.php?route=$1.php [NC,L,QSA]

【讨论】:

  • RewriteCond 肯定是需要的,但这仍然不能解释为什么它被重定向而不是错误地发送到重写循环中。
  • 我可以看到这通常是如何工作的,但我有以下文件:/admin/index.php,它似乎被您的 .htaccess 代码拾取而无需跳转到我的 bootstrap.php (我在我的引导程序中有一个杀戮,看看它是否正在通过那里,但它从 index.php 文件中抛出了大量未加载的 .php 函数,这意味着我的引导程序尚未加载。
  • @Prusprus 所以你需要admin/index.php 来通过引导文件路由?
  • 所以我需要路由 /admin 和 /admin/index - /admin 将由我的引导程序处理以默认指向 /admin/index.php。
  • 但是,/admin/ 确实可以 100% 正常工作 - 它只是 /admin(有关完整 URL 示例,请参阅问题更新)
猜你喜欢
  • 2014-03-01
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
相关资源
最近更新 更多