Php 如何根据URL模式动态重定向特定子目录?
花了几个小时寻找解决方案,但我对htaccess和重定向几乎一无所知 我的问题是:如何重定向URL的特定部分,而忽略其他部分 e、 g。http://www.example.com/foo 重定向到http://www.example.com/ 和http://www.example.com/foo/bar 保持原样Php 如何根据URL模式动态重定向特定子目录?,php,apache,.htaccess,redirect,Php,Apache,.htaccess,Redirect,花了几个小时寻找解决方案,但我对htaccess和重定向几乎一无所知 我的问题是:如何重定向URL的特定部分,而忽略其他部分 e、 g。http://www.example.com/foo 重定向到http://www.example.com/ 和http://www.example.com/foo/bar 保持原样 提前谢谢 您可以使用.htaccess文件执行此操作: Redirect 301 /foo http://www.example.com 有关.htaccess的更多信息,请签出
提前谢谢 您可以使用.htaccess文件执行此操作:
Redirect 301 /foo http://www.example.com
有关.htaccess的更多信息,请签出。尝试以下方法
RewriteRule ^foo$ http://www.%{HTTP_HOST}/ [R=301,L]
听起来,好像你需要某种广义的解决方案。如果是这种情况,您可以为此使用mod_rewrite,前提是为您的apache安装并启用了模块,或者您自己可以访问apache 这比简单的重定向功能强大得多,但也更容易击中自己的脚 它使用基于正则表达式重写URL的条件和规则 要仅重定向且准确地重定向/foo,您需要定义:
RewriteRule ^/foo$ http://www.example.com
这将使foo以下的任何内容保持不变,甚至/foo/index.html
要重定向foo下面的任何内容,如果该内容不包含子目录栏或其他子目录,则如下所示:
RewriteCond %{REQUEST_URI} !^/foo/(bar|whatever|subdirectories)/
RewriteRule ^/foo(.*) http://www.example.com/$1 [R=301,L]
RewriteCond检查在请求URI中是否找不到指定的目录,如果是这种情况,则对foo下面的任何内容应用常规重定向;$1包含正则表达式在括号内捕获的内容。*
规则中的尾随PAR[R=301,L]使得它表现为与给定HTTP返回代码301重定向,并使其成为最后一个L重定向规则,否则应用其他规则会产生一些不同的结果。
看到这里有这么多不正确的答案,真是令人惊讶。在这里,您只需要使用带有可选尾部斜杠的精确正则表达式来指向/foo 您可以在文档\u ROOT/.htaccess文件中使用此规则:
Redirect 301 /foo http://www.example.com