2016-09-27 143 views
1

我想作以下改寫:的.htaccess - 內部服務器錯誤

http://example.com/folder1/folder3/index.html 

到:

http://example.com/folder1/folder2/folder3/index.html 

的,我試過以下的.htaccess:

RewriteEngine On 

RewriteBase/

RewriteCond %{REQUEST_URI} !^folder1/folder2/.*$ 
RewriteRule ^folder1/(.*)$ /folder1/folder2/$1 [L] 

但我得到:Internal Server Error

在另一方面,如果我做了一個實驗(只是用於測試),如:

RewriteEngine On 

RewriteBase/

RewriteCond %{REQUEST_URI} !^folder1/folder2/.*$ 
RewriteRule ^folder1/(.*)$ /kkk/folder2/$1 [L] 

然後重寫:

http://example.com/folder1/folder3/index.html 

到:

http://example.com/kkk/folder2/folder3/index.html 

作品。但我需要第一次重寫。

關於如何解決這個問題的任何想法?

[編輯字 「重定向」 - >詞 「改寫」]

[編輯在error.log添加內容]

在以下jsbin你有error.log中的內容:

http://jsbin.com/fajohugase/1/edit?output

+0

'/ folder1 /'中是否還有.htaccess? – anubhava

回答

0

的URI在REQUEST_URI變量包含主導/一個它是你的URL的路徑部分。因此,當您使用!^folder1條件時,它無法匹配,導致無限循環。

RewriteEngine On 

RewriteBase/

RewriteCond %{REQUEST_URI} !^/folder1/folder2/ 
RewriteRule ^folder1/(.*)$ /folder1/folder2/$1 [L] 

至於你重定向,你實際上並沒有重定向的客戶端;而只是在內部重寫URL以包含/folder2。對於重定向,您需要標記R

+0

我做了上面的更改(我重複檢查),我仍然收到「內部服務器錯誤」。關於重定向,你是對的,我需要的是重寫而不是重定向,所以我不會使用R標誌。 – nightclub

+0

@ nightclub檢查您的服務器錯誤日誌。 – hjpotter92

+0

我添加了「error.log」內容 – nightclub