2015-05-19 61 views
1

我有一個簡單的.htaccess文件。我希望它將所有不是文件或目錄的內容重定向到index.php。我保留子文件夾may9-new中的另一個網站副本(將相同的.htaccess文件複製到該目錄中)。但問題是,我可以成功訪問www.example.com/may9-new,但是如果我轉到www.example.com/may9-new/anything,看起來我正在根文件夾中看到該網站的版本。這裏的.htaccess文件:.htaccess將所有內容重定向到index.php,但在子目錄中保留一份網站副本

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/may9-new 
RewriteRule ^([^?]*)$ /index.php?path=$1 [NC,L,QSA] 
</IfModule> 

我幾乎不知道什麼時候還的.htaccess,所以大家多多包涵。我瞭解到RewriteCondRewriteRule應該發生的一個條件。所以我試圖寫出一條路徑不能以/may9-new開頭的條件。這RewriteCond只適用於www.example.com/may9-new而不是如果有更多的斜槓添加。

有人可以幫我找出正確的規則嗎?

謝謝!

回答

0

不要在目標中使用絕對路徑/。這是您可以保留在根目錄以及子目錄中的.htaccess:

DirectoryIndex index.php 
<IfModule mod_rewrite.c> 
RewriteEngine on 

RewriteRule ^index\.php$ - [L,NC] 

# If the request is not for a valid directory 
RewriteCond %{REQUEST_FILENAME} !-d 
# If the request is not for a valid file 
RewriteCond %{REQUEST_FILENAME} !-f 
# route to index.php in current directory 
RewriteRule ^(.+)$ index.php?path=$1 [L,QSA] 
</IfModule> 
+0

我覺得你到一些東西,但我使用此.htaccess文件獲取Internet服務器錯誤。 **內部服務器錯誤 服務器遇到內部錯誤或配置錯誤,無法完成您的請求。 請聯繫服務器管理員,告知他們發生錯誤的時間以及您在此錯誤出現之前執行的操作。 有關此錯誤的更多信息可能在服務器錯誤日誌中可用** –

+0

「may9-new」沒有「index.php」嗎?你可以檢查Apache error.log,看看錯誤是500錯誤 – anubhava

+0

它肯定有一個,它的工作原理。但其他頁面不起作用。讓我弄清楚如何檢查錯誤日誌。 –

0

也許您需要將您的配置根據您的主機系統進行配置。嘗試檢查這些:

RewriteCond %{REQUEST_URI} !^/may9-new(.*) 
RewriteRule ^(.+)$ /index.php?path=$1 [NC,QSA] 

您也可以聯繫您的託管服務提供商對這個問題,因爲你說:

奇怪的是,這個網站與它的.htaccess文件工作在一個 不同領域的...主辦

你也有你的「may9新」子文件夾相同的.htaccess文件

我保持網站的其他副本中的子文件夾may9新 (與複製到該目錄同.htaccess文件)。

如果你也有,那麼有可能發生衝突,嘗試修改您的子文件夾的的.htaccess文件

RewriteRule ^(.+)$ /may9-new/index.php?path=$1 [NC,QSA] 
+0

原來,may9-new中的.htaccess文件有錯誤的文件名,但我更新了您的編輯並更改了名稱,現在我得到了某種無限重定向循環...與上述相同的Internet服務器錯誤其他答案。 –

+0

@NickManning記住總是用'!-f'和'!-d'檢查文件是否存在。在你的子文件夾中試試這個:'RewriteRule ^/may9-new /(.+)$/may9-new/index.php?path=$1 [NC,QSA]' – 5ervant

+0

有了這個規則,我得到了同樣的原始問題。 ..它似乎顯示根文件夾中的站點版本。當我切換回來時,它是一個無限的重定向。 –

相關問題