gpt4 book ai didi

apache - 如何重写一部分 url (/api/something)?

转载 作者:行者123 更新时间:2023-12-01 04:04:45 25 4
gpt4 key购买 nike

我有一个 .htaccess 规则,它基本上通过一个页面指向所有访问,并且我让 PHP 从那时开始处理它。因此,无论它在哪个目录中,它都会将所有 URL 传递给该脚本。

如果我的根是/project/(example.com/project/some/page/where),/some/page/where 将被重定向到 @frontend.php

RewriteRule !\.(js|ico|gif|jpg|png|css|pdf|swf|doc)$ @frontend.php

但是,我已经到了一个点,我希望能够将页面的子集推送到不同的处理程序,就像这样(example.com/project/api/page/where,而不是 example.com/project/some/api/哪里):
RewriteRule ^/api?$ @api.php

问题是,这不起作用,无论此规则是高于还是低于另一个规则。谁能建议我如何做到这一点?

我也试过:
RewriteRule ^/api(/.*)? @api.php [L]

RewriteCond %{REQUEST_URI} !/api
RewriteRule !\.(js|ico|gif|jpg|png|css|pdf|swf|doc)$ @frontend.php [L]

虽然这适用于 http://example.com/project/api/page/where不会被推送到@frontend.php,也不会被推送到@api.php,并产生:
[Wed Apr 18 10:46:12 2012] [error] [client 127.0.0.1] File does not exist: /www/project/api

编辑:

我最近的尝试是:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^api(/.*)? @api.php [L]

RewriteCond %{REQUEST_URI} ^api
RewriteRule !\.(js|ico|gif|jpg|png|css|pdf|swf|doc)$ @frontend.php

这个问题是,如果 URL 以除 api/以外的任何内容开头,例如(example.com/project/test/page/where),它会抛出错误:
[Sat Apr 21 10:50:13 2012] [error] [client 127.0.0.1] File does not exist: C:/xampp/www/projects/frame3/test

最佳答案

问题是第二个请求也针对 htaccess 进行了测试,因此实际上您有两个请求。因为没有任何适合的 js/ico/gif 规则。
您可以使用 Apache 的 {ENV:REDIRECT_STATUS} 机制通过 RewriteConds 或 regileros(更好的)方法来管理它。有关更多信息,请参阅 this 问题。

编辑:我在 http://playground.rexbooks.com/stack 设置了一个小例子。如果你输入,f.e. http://playground.rexbooks.com/stack/api/123456 它会将您重定向到 api.php。任何其他查询将被重定向到frontend.php。线索是检查文件是否真的存在。我也拆分了你的其他规则。 RewriteBase 仅适用于我的设置,您需要对其进行调整。要不使 uris 透明,请删除 rewrite (R) 标志。这就是你追求的吗?

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^api(/.*)? /api.php [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !api
RewriteCond %{REQUEST_URI} !\.(js|ico|gif|jpg|png|css|pdf|swf|doc)$
RewriteRule (.*) /frontend.php [L,R]

关于apache - 如何重写一部分 url (/api/something)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10202018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com