2010-08-28 42 views
1

我有一個ajax文件,當某人開始在搜索欄中輸入時被調用。我最近一直在清理我的網址,並刪除文件擴展名添加尾隨斜線,因爲那時我的ajax文件似乎不再加載。誰能幫忙?在這裏我的htaccess到目前爲止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] 
+0

我相信RewriteCond只適用於直接在它們下面的規則,所以如果你的AJAX請求是對一個路徑有兩個目錄,並且存在一個目錄,這可以解釋它。你要做什麼地址的AJAX請求,以及它應該訪問的實際URL是什麼? – 2010-08-28 13:12:27

+0

Ajax請求/include/get-content.php ,這是文件的URL: www.lovelakedistrict.com/include/get-content.php 這是你的意思? – AJFMEDIA 2010-08-28 13:39:07

+0

@ajfmedia - 如果你刪除最後一個條件和規則,它是否工作? 301重定向可能會混淆請求,所以如果出現這個問題,就不應該太過難以忽略那些僅針對使用AJAX請求訪問的文件的規則。 (但我不想發佈與此相關的答案,但不知道這是實際問題) – 2010-08-28 14:08:57

回答

2

假設你的AJAX請求轉到/includes文件夾,正常的頁面不一樣,我們可以讓他們看起來像這樣修改規則位(包括有關RewriteCondCags'評論):

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得到正確解釋在第一次重定向之後(我現在認爲你會重定向兩次,一次是第一次重定向,一次是最後一次重定向)。

+0

非常感謝你。完美的作品。如果你現在搜索的東西,你會得到過濾搜索結果:) http://www.lovelakedistrict.com – AJFMEDIA 2010-08-28 15:14:56