Apache mod_重写特定命名文件的重定向,导致循环

Apache mod_重写特定命名文件的重定向,导致循环,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我对下面的重写规则有点问题 RewriteRule ^dir_([a-z\\-]*).php$ /dir/$1/ [R=301,L] RewriteRule ^dir/([a-z\\-]*)(/)?$ /dir_$1.php [L] 我想将所有遵循样式dir\u file-name.php的文件重定向到dir/file-name/,并显示php文件中的内容 仅第一条规则就可以正常工作并重定向,但它不显示内容。所以我制定了第二条规则,它只是创建了一个循环,阻止页面加载。我如何解决这个问题?对不起

我对下面的重写规则有点问题

RewriteRule ^dir_([a-z\\-]*).php$ /dir/$1/ [R=301,L]
RewriteRule ^dir/([a-z\\-]*)(/)?$ /dir_$1.php [L]
我想将所有遵循样式dir\u file-name.php的文件重定向到dir/file-name/,并显示php文件中的内容

仅第一条规则就可以正常工作并重定向,但它不显示内容。所以我制定了第二条规则,它只是创建了一个循环,阻止页面加载。我如何解决这个问题?对不起,我在regex和apache方面的技能不是最好的


谢谢。

您可以使用RewriteCond检查最初请求的URI是什么。只有当这是
dir\u file-name.php
时,才需要执行外部重定向


或者,如果您使用的是Apache2.4,那么第二条规则的
END
标志也会有所帮助+
(它可以防止在.htaccess上下文中配置重写时发生的“循环”,在该上下文中,重写的内部URL将再次馈送到整个过程中,除非不再应用任何规则。)

您可以使用RewriteCond检查最初请求的URI是什么。只有当这是
dir\u file-name.php
时,才需要执行外部重定向


或者,如果您使用的是Apache2.4,那么第二条规则的
END
标志也会有所帮助+
(它可以防止在.htaccess上下文中配置重写时发生的“循环”,在该上下文中,重写的内部URL将再次馈送到整个过程中,除非不再应用任何规则。)

您需要使用重写条件来检查最初请求的URI是什么。只有当这是
dir\u file-name.php
时,您才需要执行外部重定向。或者第二条规则的
END
标志也会有所帮助,如果您使用的是Apache 2.4+谢谢,我从来不知道
END
标记。这很有效您需要使用RewriteCond来检查最初请求的URI是什么。只有当这是
dir\u file-name.php
时,您才需要执行外部重定向。或者第二条规则的
END
标志也会有所帮助,如果您使用的是Apache 2.4+谢谢,我从来不知道
END
标记。这很有效