php - .htaccess ajax 的特殊规则例外?
问题描述
因此,对 Regex 的经验非常少,对 .htaccess 的经验也很少,我需要问这个:
我想在我的网站上使用 AJAX,但我的 mod 重写配置阻止我正确执行此操作,因为我将所有 url 重定向到我index.php
并设置了url $_GET
变量,这是我当前的设置:
RewriteEngine On
Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
现在,如果查询包含“”作为字符串,我希望此规则不会触发&ajax&
,至少我总是将“ &ajax&time=...
”附加到要加载的 ajax 路径。
所以我认为最简单的方法是检查我是否可以匹配“ajax”并使用[S]
kip 或[L]
ast 标志来防止其他规则触发,但还没有实现它,有什么帮助吗?有解释或指向一些?
此外,如果这不需要绝对 url 或任何东西,那就太好了,因为我希望它在开发(本地主机)和实时(实际域)环境中都可以工作,而无需相应地更改 .htaccess 文件。
所以
- 我要网址
example.com/profile
- 被重定向到
example.com/index.php?url=profile
和
- 我要网址
example.com/src/file.php?stuff=something&ajax&time=1234
- 留下来
example.com/src/file.php?stuff=something&ajax&time=1234
但
- 我要网址
example.com/ajax
- 也被重定向到
example.com/index.php?url=ajax
(以防万一)
非常感谢任何帮助,谢谢!
解决方案
htaccess 文件不应重写对有效文件的请求。这是这样说的行:
RewriteCond %{REQUEST_FILENAME} !-f
所以你想要的应该已经发生了,假设 src/file.php 存在于服务器上。
推荐阅读
- google-app-engine - Google Firestore 删除所有超过 x 小时的集合
- java - 在 Docker 容器中运行 maven 时如何修复 javax.net.ssl.SSLException?
- powershell - Powershell 作业和变量
- typescript - 如何检查角度 8 中的下一个行为主题值
- swift - Swift:更改 UINavigationController 视图的高度
- sql-server - 正则表达式仅获取字符串中每个数字的最后一次出现
- wordpress - 插件擦除主题中的自定义帖子模板
- flutter - Flutter TextFormField 装饰
- python - 如何使用模糊的 wuzzy python 编写所有行?
- c# - C# - TcpClient 连接(和监听)是否使用带宽?