1

我有一个 ajax 文件,当有人开始在搜索栏中输入时会调用它。我最近一直在清理我的网址并删除添加斜杠的文件扩展名,从那时起我的 ajax 文件似乎不再加载。谁能帮忙?到目前为止我的 htaccess

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]
4

1 回答 1

2

假设您的 AJAX 请求进入该/includes文件夹,而您的普通页面没有,我们可以稍微修改您的规则,使它们看起来像这样(包括Cags 对 的评论RewriteCond):

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.phpto/page的重定向(我认为现在你将被重定向两次,一次是第一个块,一次是最后一个块)。

于 2010-08-28T14:37:12.107 回答