0

必要な知識

私の.htaccessファイルは次のようにリダイレクトされます:domain.com/about to domain.com/index.php?page=about

RewriteRule ^([^/.]+)/?$ index.php?page=$1 [L]

「page」変数は、phpインクルードで使用されます。

<?php include_once($_SERVER['DOCUMENT_ROOT']."/contents/".$page.".html"); ?>

「contents」フォルダには、コンテンツとして含まれている.htmlファイルが含まれているだけです。

さて、ここに問題があります:

「contents」フォルダに「subfolder」があり、アクセスする必要のある追加の.htmlファイルがあります。domain.com/ subfolder / abouttodomain.com/index.php?page=のようにリダイレクトしようとしています。サブフォルダ/約

これは機能します:

RewriteRule ^([^/.]+/[^/.]+)/?$ index.php?page=$1

しかし、「page」変数があるため、domain.com /subfolder/からサブフォルダーにアクセスできなくなりました。

<?php $page = $_GET['page']; if(!$page) { $page = 'index'; } ?>

任意の考え、アイデア、または助けをいただければ幸いです。

前もって感謝します

4

4 に答える 4

2

これにより、ディレクトリ名を定義する必要がなくなります。すべて除外されます。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+/[^/.]+)/?$ index.php?page=$1

ただし、末尾のスラッシュをテストする必要がある場合があります。/subfolder/ では機能するが、/subfolder では機能しない可能性があります

于 2009-07-23T11:09:13.967 に答える
0

次の方法で特定のフォルダを除外できます

rewritecond %{REQUEST_URI}!^/folder1/  
rewritecond %{REQUEST_URI}!^/folder2/  
RewriteRule ^([^/.]+/[^/.]+)/?$ index.php?page=$1  

編集:マニュアルへのリンク

于 2009-07-23T11:00:22.313 に答える
0

別のチェックを行うだけです:

if (preg_match('/^[^\\/.]+$/', $page)) {
    $page .= '/index';
}

$pageが justsubfolderの場合、 /indexhave に追加されますsubfolder/index

于 2009-07-23T11:10:02.870 に答える
0
rewriteRule ^foldername/.*$ - [PT] 
rewriteRule ^foldername/.*$ - [PT] 

他の書き換えルールの前に...

于 2010-02-19T05:05:34.223 に答える