2014-07-10 10 views
0

我已經開始潛入使用pushState的驅動我的單頁Web應用程序,跑進我的.htaccess問題無形重定向使用htaccess的+ pushState的,發出

我最初想重定向URL的所有調用到根網站的文件夾,但保留舊的url在地址欄中供jquery使用並使用pushstate加載。

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.+)$ /$1 [L] 

這是我的重定向,但是,當jQuery的嘗試獲取動態內容的問題,它吐出了一個500錯誤。另外,當我導航到任何子目錄時,瀏覽器也吐出500錯誤。

+我的網站是在一個子域。

任何幫助,將不勝感激。


編輯:

感謝大家的響應@anubhava。

我試過這個「重寫規則^/[L,R]」沒有運氣。我甚至加了「[L,R = 301]」。

是否有意義地說這是我正在研究的子域?例如:sub.domain.com

我有以下這樣做在非二級域名網站,並沒有任何問題:

Options +FollowSymlinks 
RewriteEngine On 

RewriteCond %{REQUEST_URI} !\.(gif|jpg|png)$ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.*) /index.php [L] 

RewriteCond %{REQUEST_URI} !^/ [NC] 
RewriteRule ^(.*)$ /$1 [L,NC,R=301] 

回答

0
Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/[L] 

ErrorDocument 404 /404/ 

謝謝大家的響應。我對這個東西很陌生,並設法理解,你確實可以將任何類型的請求重新路由到/ root目錄。但是,如果請求是針對已存在的文件夾,則重新路由將不起作用。除非你刪除了RewriteCond %{REQUEST_FILENAME} !-d行。

但刪除該行也不允許您的應用發送或接收ajax調用。你得到的迴應是你的index.php。

我做了我的應用程序中的URL重新路由,以查找具有特定關鍵詞的網址,並從另一個文件夾中加載匹配的內容。

**** 404行將用戶重定向到我的/ 404 /應用程序也處理的

2

既然要重定向到根,您的規則不是很對。試試這個:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/[L] 
+0

感謝您的回覆。我已經嘗試過這種技術,因爲它工作正常。唯一的一點是,如果刷新頁面的URL已更改,瀏覽器不會加載根目錄。 示例: 而不是domain.com/locations重定向到domain.com(「/ locations」對用戶仍然可見),它會打開「/ locations」。 我希望這是有道理的 – bheku

+0

+1它應該工作。 @bheku:嘗試添加例如「R」標誌。 'RewriteRule ^/[L,R]' – anubhava

+0

謝謝你的回覆@anubhava。 我試過這個RewriteRule ^/[L,R]沒有運氣。我甚至加了「[L,R = 301]」。 說這是我正在研究的一個子域是否重要?例如:sub.domain。com – bheku