Regex 由于尾部斜杠,未加载ajax文件

Regex 由于尾部斜杠,未加载ajax文件,regex,apache,.htaccess,mod-rewrite,clean-urls,Regex,Apache,.htaccess,Mod Rewrite,Clean Urls,我有一个ajax文件,当有人开始在搜索栏中键入内容时会调用它。我最近一直在清理我的URL,删除文件扩展名并添加斜杠,从那时起,我的ajax文件似乎不再加载。有人能帮忙吗?这是我迄今为止的访问权限 Options +FollowSymlinks Options +Indexes RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/$ $1.php RewriteRule ^([^/]+)/([^/

我有一个ajax文件,当有人开始在搜索栏中键入内容时会调用它。我最近一直在清理我的URL,删除文件扩展名并添加斜杠,从那时起,我的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]

假设您的AJAX请求转到
/includes
文件夹,而您的普通页面没有,我们可以稍微修改一下您的规则,使它们看起来像这样(包括有关
重写秒的注释):


我还认为您需要在中间块的规则末尾添加
/?
,或者将
/$1/
替换为第一块中的规则,以便在第一次重定向后正确解释从
/page.php
/page
的重定向(我想现在你会被重定向两次,一次是第一个街区,另一次是最后一个街区).

我认为RewriteCond只适用于它们正下方的规则,因此,如果您的AJAX请求指向两个目录深的路径,并且存在一个目录,这可以解释这一点。您向哪个地址发出AJAX请求,以及它应该访问的实际URL是什么?AJAX请求/include/get-content.php,这是文件url:www.lovelakedistrict.com/include/get-content.php这就是你的意思吗?@ajfmedia-如果你删除最后的条件和规则,它会起作用吗?301重定向可能会弄乱请求,所以如果这是问题所在,就不难忽略这个规则,只针对你通过AJAX请求访问的文件。(但我不想在不知道这是实际问题的情况下发布与此相关的答案)是的,当我删除最后一个条件和规则时,它可以正常工作。你知道为ajax请求忽略该规则吗?非常感谢tim和cagsgreat。非常好用。如果你现在搜索某个内容,你会得到过滤的搜索结果:)
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]