2010-08-28 41 views
1

我有一个ajax文件,当某人开始在搜索栏中输入时被调用。我最近一直在清理我的网址,并删除文件扩展名添加尾随斜线,因为那时我的ajax文件似乎不再加载。谁能帮忙?在这里我的htaccess到目前为止ajax文件没有加载,因为后面的斜杠

Options +FollowSymlinks 
Options +Indexes 
RewriteEngine on 


RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^([^/]+)/$ $1.php 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^([^.]+)\.php$ /$1 [R=301,L] 
+0

我相信RewriteCond只适用于直接在它们下面的规则,所以如果你的AJAX请求是对一个路径有两个目录,并且存在一个目录,这可以解释它。你要做什么地址的AJAX请求,以及它应该访问的实际URL是什么? – 2010-08-28 13:12:27

+0

Ajax请求/include/get-content.php ,这是文件的URL: www.lovelakedistrict.com/include/get-content.php 这是你的意思? – AJFMEDIA 2010-08-28 13:39:07

+0

@ajfmedia - 如果你删除最后一个条件和规则,它是否工作? 301重定向可能会混淆请求,所以如果出现这个问题,就不应该太过难以忽略那些仅针对使用AJAX请求访问的文件的规则。 (但我不想发布与此相关的答案,但不知道这是实际问题) – 2010-08-28 14:08:57

回答

2

假设你的AJAX请求转到/includes文件夹,正常的页面不一样,我们可以让他们看起来像这样修改规则位(包括有关RewriteCondCags'评论):

Options +FollowSymlinks 
Options +Indexes 

RewriteEngine on 

# We'll do the redirect first, so no other rules get in the way 
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^.#?\ ]+)\.php([#?][^\ ]*)?\ HTTP/ 
# Make sure the request didn't start with "includes" 
RewriteCond %1 !^includes/ 
RewriteRule ^([^.]+)\.php$ /$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ $1.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 

我也认为你要么想/?在中央花纹块规则的结束,或者/$1/作为第一区块的规则替换,从而使重定向从/page.php/page得到正确解释在第一次重定向之后(我现在认为你会重定向两次,一次是第一次重定向,一次是最后一次重定向)。

+0

非常感谢你。完美的作品。如果你现在搜索的东西,你会得到过滤搜索结果:) http://www.lovelakedistrict.com – AJFMEDIA 2010-08-28 15:14:56