使用RewriteRule 500内部服务器错误,从旧目录重定向到新目录

时间:2017-09-18 18:48:35

标签: apache .htaccess redirect mod-rewrite

对不起,我知道这里有一百万个mod_rewrite问题。我看了很多,并试图从别人的错误中吸取教训,但我不知道我在这里做错了什么。

我的网站曾经是http://example.com/andrew/qa。现在它在http://example.com/fdso

我只想将所有/andrew/qa/(.*)个网址重定向到/fdso/$1。包括更改浏览器上的URL,我理解301选项负责:

DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/andrew/qa/.* [NC]
RewriteRule ^/andrew/qa/(.*)$ /fdso/$1 [L,301]
</IfModule>

我在/andrew/qa/.htaccess的.htaccess文件中有这个。

我收到500内部服务器错误,无法找出原因。

我正在使用的服务器似乎不会因某些原因生成日志。 (日志目录丢失了。)我几乎无法控制此服务器,因为我没有root访问权限。

1 个答案:

答案 0 :(得分:2)

此行导致500错误:

RewriteRule ^/andrew/qa/(.*)$ /fdso/$1 [L,301]

这是因为301应为R=301

但是,您的规则仍然不会重定向,因为/格式为/andrew/qa/并且RewriteRule模式中存在/andrew/qa/.htaccess

RewriteEngine On RewriteRule ^(.*)$ /fdso/$1 [L,NE,R=301]

中这样做
RewriteCond

您也不需要多余TRUNCATE