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