1

誰かが検索バーに入力を開始したときに呼び出される 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]
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/最初のブロックのルールの代わりとして必要だったと思います (私は今、あなたが最初のブロックで 1 回、最後のブロックで 2 回リダイレクトされます)。/page.php/page

于 2010-08-28T14:37:12.107 に答える