我使用了很多重定向,但是我无法搜索到达目标。
我想要实现的目标:
/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中。
答案 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
文件是否存在,而不是父目录,因为您最终会重写文件,而不是目录。