在不破坏真实文件的情况下重写Url

时间:2012-08-04 16:08:59

标签: .htaccess mod-rewrite url-rewriting

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

目前看起来像这样:

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

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

我希望能够通过index.php和其他所有请求正常路由每个非实际请求。

2 个答案:

答案 0 :(得分:1)

如果您可以为正常请求找到一个(或多个),则可以使用RegEx潜入另一个RewriteCond。像

这样的东西
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !^*your* *RegEx* *for* *normal* *request*
RewriteRule ^(.*)$ index.php?name=$0 [L]

答案 1 :(得分:1)

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

我的猜测是你从 / some-dir / another-path / 等网址发出相对的ajax请求,这些请求在内部被重写为 index.php?name = / some-dir /另一个路径/ 。对 / -ajax-data.php 的相对ajax请求将被发送到 /some-dir/another-path/my-ajax-data.php ,而不是您可能会想到 /my-ajax-data.php 。尝试在ajax请求中使用绝对URL。嗯,这只是在黑暗中拍摄的。