. Dinamik php ile htaccess - alt problemler

4 Cevap php

Necessary Knowledge

My .htaccess file redirects like this: domain.com/about to domain.com/index.php?page=about

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

"Sayfa" değişken bir php kullanılan şunlardır:

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

Klasör sadece içeren "içindekiler". Html dosyaları içerik olarak dahil edilir

Okay here's the problem:

I have a "subfolder" in the "contents" folder with additional .html files that I need to access Now I'm trying to redirect like this: domain.com/subfolder/about to domain.com/index.php?page=subfolder/about

Bu çalışır:

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

Bir 'sayfa' değişken var domain.com / alt klasör / çünkü: Ama şimdi ben gelen alt erişemiyor

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

Herhangi bir düşünce, fikir, veya yardım büyük mutluluk duyacağız.

Şimdiden teşekkürler

4 Cevap

Bu ile, herhangi bir dizin adlarını tanımlamak zorunda olmamalıdır - hepsini dışladı.

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

Gerçi bölü test etmek gerekebilir, bu on / alt klasör / ama / Subfolder çalışabilir

Sen aracılığıyla belirli klasörü dışarıda olabilir

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

Edit: Link to the manual

Sadece başka bir kontrol yapın:

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

$page sadece subfolder, /index sahip ekli olur ise, subfolder/index.

rewriteRule ^foldername/.*$ - [PT] 
rewriteRule ^foldername/.*$ - [PT] 

başka herhangi bir yeniden yazma kuralı önce ...