mod-rewrite从url中删除文件夹名称

时间:2012-10-12 15:53:30

标签: apache .htaccess mod-rewrite

我正在使用OJS,我已将其安装在名为“journals”的文件夹中。我在那里创建了一些期刊(例如“journal1”,“journal2”等)。

现在我得到这样的路径:www.example.com/journals/index.php/journal1www.example.com/journals/index.php/journal2等等。

我想要的是映射www.example.com/journals/index.php/journal1 看起来像www.example.com/index.php/journal1(从URL中删除日记部分)。

我无法将OJS移动到root,因为我还有其他文件。

这是我目前正在使用的.htaccess文件(它位于“journals”文件夹中并给我500个)

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^journals
RewriteRule ^(.*) /journals/$1 [L]
</IfModule>

此处还有error.log

[Fri Oct 12 22:16:45 2012] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. 

1 个答案:

答案 0 :(得分:3)

当您将这些规则放在/journals目录中的htaccess文件中时,它会导致重写循环。 $1永远不会从期刊开始,因为您在期刊目录中,因此规则不断得到应用。

您需要在 site-root /目录中的htaccess文件中输入类似内容:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/journals
RewriteRule ^index\.php(.*)$ /journals/index.php$1 [L]