Apache RewriteRule无限循环

时间:2013-09-03 10:16:40

标签: apache .htaccess mod-rewrite

我正在努力重建网站的链接结构。

对于某些部分,该网站现在回复实际的PHP脚本,如:

DOMAIN/about-us.php

我必须像这样重新映射那些类型的URL(这只是一个例子):

DOMAIN/about-us.php --> DOMAIN/uk/about-us

由于这些页面已经编入索引,我想使用301重定向到新资源。

我使用了那些规则:

RewriteRule ^/about-us.php$ /uk/company/about-us   [R=301,L]
RewriteRule ^/uk/company/about-us$ about-us.php   [L]

但这会遇到无限循环。

我尝试了不同的解决方案但没有运气(我也试过这个:How to stop .htaccess loop - 建议的第二种方法)。在我的环境中唯一有效的方法是重命名about-us.php并更新规则。但由于我们有很多脚本重命名所有这些并不是最佳选择。

1 个答案:

答案 0 :(得分:2)

尝试一下:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*)\.php [NC]
RewriteRule ^ /%1 [R=301,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule /?([^/]+)/?$ $1.php [L]

仅适用于根文件夹上的php。

相关问题