Apache .htaccess-内部服务器错误
我正在尝试进行以下重写:Apache .htaccess-内部服务器错误,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我正在尝试进行以下重写: http://example.com/folder1/folder3/index.html http://example.com/folder1/folder3/index.html 致: 为此,我尝试了以下.htaccess: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !^folder1/folder2/.*$ RewriteRule ^folder1/(.*)$ /folder1/fo
http://example.com/folder1/folder3/index.html
http://example.com/folder1/folder3/index.html
致:
为此,我尝试了以下.htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^folder1/folder2/.*$
RewriteRule ^folder1/(.*)$ /folder1/folder2/$1 [L]
但我得到:内部服务器错误
另一方面,如果我做一个实验(只是为了测试),比如:
然后重写:
致:
工作。但我需要第一次重写
有没有办法解决这个问题
[编辑单词“重定向”->单词“重写”]
[编辑以添加error.log内容]
在以下jsbin中,您有error.log内容:
变量中的URI包含前导的/
,因为它是URL的路径部分。因此,当您使用时^folder1
条件,它无法匹配,导致无限循环
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/folder1/folder2/
RewriteRule ^folder1/(.*)$ /folder1/folder2/$1 [L]
至于重定向,您实际上并没有重定向客户端;但只需在内部重写URL,将/folder2
包含在其中。对于重定向,您需要R
标志。变量中的URI包含前导的/
,因为它是URL的路径部分。因此,当您使用时^folder1
条件,它无法匹配,导致无限循环
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/folder1/folder2/
RewriteRule ^folder1/(.*)$ /folder1/folder2/$1 [L]
至于重定向,您实际上并没有重定向客户端;但只需在内部重写URL,将
/folder2
包含在其中。对于重定向,您需要R
标志。我做了上面的更改(我仔细检查了),但仍然得到“内部服务器错误”。关于重定向,你是对的,我需要的是重写而不是重定向,所以我不会使用R标志。@nightclub你还有一些其他的重写,它们在你的内部重定向中添加了example.com
,导致了无限循环。我做了上面的更改(我仔细检查了一下),但我仍然得到了“内部服务器错误”。关于重定向,你是对的,我需要的是重写而不是重定向,所以我不会使用R标志。@nightclub你还有一些其他重写,它们在你的内部重定向中添加了example.com
,导致无限循环。/folder1/
中也有.htaccess吗?/folder1/
中也有.htaccess吗?
http://example.com/kkk/folder2/folder3/index.html
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/folder1/folder2/
RewriteRule ^folder1/(.*)$ /folder1/folder2/$1 [L]