0

所以我在RewriteRuleand方面非常糟糕.htaccess,我一直在尝试创建一个 RewriteRule,它允许我通过 index.php 重定向目录中不存在的任何请求。

目前看起来是这样的:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?name=$0 [L]

但是,一旦我开始尝试从重定向的 url 运行 ajax 请求,它就会中断并返回整个重定向页面,而不是目录中任何脚本的返回数据。我很困惑如何才能完成这项工作。\

我想要做的是能够通过 index.php 路由每个非真实请求以及正常的所有其他请求。

4

2 回答 2

1

您的 htaccess 代码是正确的。“-f”检查有效文件,“-d”检查有效目录。

我的猜测是,您从像/some-dir/another-path/这样的 url 发出相对 ajax 请求,它在内部被重写为index.php?name=/some-dir/another-path/对my-ajax-data.php的相对 ajax 请求将发送到/some-dir/another-path/my-ajax-data.php,而不是您可能认为的/my-ajax-data.php 。尝试在 ajax 请求中使用绝对 URL。好吧,这只是在黑暗中拍摄。

于 2012-08-04T22:23:58.113 回答
1

RewriteCond您可以使用 RegEx潜入另一个,以防您可以为您的正常请求找到一个(或多个)。就像是

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !^*your* *RegEx* *for* *normal* *request*
RewriteRule ^(.*)$ index.php?name=$0 [L]
于 2012-08-04T16:16:42.953 回答