2016-09-27 141 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