必要的知识
我的.htaccess文件重定向如下: domain.com/about到domain.com/index.php?page=about
RewriteRule ^([^/.]+)/?$ index.php?page=$1 [L]
“page”变量用于php include:
<?php include_once($_SERVER['DOCUMENT_ROOT']."/contents/".$page.".html"); ?>
“contents”文件夹只包含作为内容包含的.html文件
好的,这就是问题:
我在“contents”文件夹中有一个“子文件夹”,其中包含我需要访问的其他.html文件 现在我正试图像这样重定向: domain.com/subfolder/about到domain.com/index.php?page=subfolder/about
这有效:
RewriteRule ^([^/.]+/[^/.]+)/?$ index.php?page=$1
但是现在我无法从以下网址访问子文件夹:domain.com/subfolder/因为有一个'page'变量
<?php $page = $_GET['page']; if(!$page) { $page = 'index'; } ?>
任何想法,想法或帮助将不胜感激。
提前致谢
答案 0 :(得分:2)
有了这个,您不必定义任何目录名称 - 它将它们全部排除在外。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+/[^/.]+)/?$ index.php?page=$1
你可能需要测试尾部斜杠,它可以在/子文件夹/但不在/子文件夹
上工作答案 1 :(得分:0)
您可以通过
排除特定文件夹rewritecond %{REQUEST_URI}!^/folder1/
rewritecond %{REQUEST_URI}!^/folder2/
RewriteRule ^([^/.]+/[^/.]+)/?$ index.php?page=$1
答案 2 :(得分:0)
再做一次检查:
if (preg_match('/^[^\\/.]+$/', $page)) {
$page .= '/index';
}
如果$page
仅为subfolder
,/index
将附加到subfolder/index
。
答案 3 :(得分:0)
rewriteRule ^foldername/.*$ - [PT]
rewriteRule ^foldername/.*$ - [PT]
在任何其他重写规则之前......