重定向匹配目录的网址,否则

时间:2015-11-15 11:24:41

标签: .htaccess directory

我使用了很多重定向,但是我无法搜索到达目标。

我想要实现的目标:

  • /aaaa重定向到/articles/aaaa.php的请求 但只在浏览器中显示/aaaa(这已经有效多年了)
  • /bbbb的请求是一个目录,不存在此名称的文件,必须重定向到/products/bbbb/index.php(但只能在浏览器中显示/bbbb)*

这就是我现在使用的:

RewriteRule ^([a-z0-9-_]+)$ /articles/$1.php [NC,L]

*作为替代,如果它太复杂,这是可以的:对/ bbbb的请求(这是一个没有该名称的文件的目录)重定向到/ products / bbbb(并在目录/ products / bbbb I&#39 ; ll用一个本地.htaccess然后将它重定向到index.php)仍然应该显示在浏览器/ bbbb中。

1 个答案:

答案 0 :(得分:0)

重写/articles目录中的文件时,可以先检查它是否存在(作为文件)。例如:

RewriteCond %{DOCUMENT_ROOT}/articles/$1.php -f
RewriteRule ^([a-z0-9-_]+)$ /articles/$1.php [L]

除非你明确需要,否则我还删除了NC标志?

同样在内部重写到目录:

RewriteCond %{DOCUMENT_ROOT}/products/$1/index.php -f
RewriteRule ^([a-z0-9-_]+)$ /products/$1/index.php [L]

这实际上会检查index.php 文件是否存在,而不是父目录,因为您最终会重写文件,而不是目录。