AJAX-файл не загружается из-за косой черты - PullRequest
1 голос
/ 28 августа 2010

У меня есть ajax-файл, который вызывается, когда кто-то начинает печатать в строке поиска.Недавно я очищал свои URL-адреса и удалял расширения файлов, добавляя завершающие косые черты, с тех пор мой 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]

1 Ответ

2 голосов
/ 28 августа 2010

Предполагая, что ваши запросы 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.php на /page правильно интерпретируется после первого перенаправления (я думаю, что сейчас вы будете перенаправлены дважды, один раз первым блоком и снова последним блоком).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...