.htaccess ajax特殊规则例外?

时间:2018-04-30 14:09:20

标签: php ajax .htaccess url mod-rewrite

因此,对于使用.htaccess进行正则表达式和次要牛肉的经验非常少,我需要问一下:

我想在我的网站上使用AJAX,但我的mod重写配置阻止我正确执行此操作,因为我将所有网址重定向到index.php并设置网址 {{1变量,这是我当前的设置:

$_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路径。

所以我认为最简单的方法是检查我是否可以匹配“ajax”并使用&ajax&time=...基普或[S] ast标志来阻止其他规则触发,但是无法启用实现它,还有什么帮助吗?有一些解释或指示吗?

此外,如果这不需要绝对URL或任何内容,那将是很好的,因为我希望它在开发(localhost)和实时(实际域)环境中工作,而不会相应地更改.htaccess文件。

SO

  • 我想要网址[L]
  • 将被重定向到example.com/profile

  • 我想要网址example.com/index.php?url=profile
  • 留下example.com/src/file.php?stuff=something&ajax&time=1234

BUT

  • 我想要网址example.com/src/file.php?stuff=something&ajax&time=1234
  • 也会被重定向到example.com/ajax(以防万一)

非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

htaccess文件不应重写有效文件的请求。这就是说:

RewriteCond %{REQUEST_FILENAME} !-f

假设服务器上存在src / file.php,那么您应该已经发生了什么。

答案 1 :(得分:1)

如果查询字符串包含RewriteCond,您只需在规则中添加另一个ajax即可跳过此规则:

Options -Indexes
RewriteEngine On

RewriteCond %{QUERY_STRING} !(?:^|&)ajax [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]