在不破坏真实文件的情况下重写网址
问题描述:
所以我非常可怕的在RewriteRule
和.htaccess
,我一直在尝试创建一个RewriteRule,它允许我通过index.php重定向任何目录中尚不存在的请求。在不破坏真实文件的情况下重写网址
它看起来像这样的时刻:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?name=$0 [L]
然而,一旦我开始试图运行从一个重定向的URL它打破了Ajax请求,而是返回任何脚本,它的返回数据的整个重定向页面在目录中。我很困惑,我该如何做这项工作。 \
我希望能够做到的是能够通过index.php和其他每个请求来正常处理每个非真实请求。
答
如果您可以为您找到一个(或多个)正常请求,您可以使用正则表达式在另一个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]
答
您的htaccess代码是正确的。 “-f”检查有效的文件,“-d”检查有效的目录。
我的猜测是,你从一个网址发出相对Ajax请求喜欢/在内部改写为的index.php?NAME = /一些-DIR /其他路径/一些-DIR /其他路径/ 。的相对Ajax请求,即我的Ajax-data.php将作出/some-dir/another-path/my-ajax-data.php,而不是/my-ajax-data.php如你所想。尝试在ajax请求中使用绝对URL。呃,这只是在黑暗中拍摄而已。
对于正常的请求,我只是希望它能正常运行。 – 2012-08-04 16:18:01
是的,我添加的条件有点说“如果REQUEST_FILENAME'不是以* * *正则* *请求*开头,那么使用下面的规则重定向”.... – Havelock 2012-08-04 16:25:33
没有似乎工作,我仍然得到我的index.php打印输出rerout – 2012-08-04 16:32:38