因此,对于使用.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
(以防万一)非常感谢任何帮助,谢谢!
答案 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]