2013-02-13 86 views
0

我的網站的結構如下遷入子目錄衝突的.htaccess

  • 網站
    • INC/
      • 子目錄/
      • 的header.php
      • content.php
      • footer.php
    • 的index.php
    • .htaccess

現在在我的.htaccess,我在這樣的方式http://my_website/page/s/o完成URL Re-writing。現在我想進入子目錄,但它將第一個參數設置爲page,並且它沒有進入子目錄。我不能把子目錄根(避免模板結構的重新定義)

下面

是我.htaccess文件

AddDefaultCharset utf-8 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule .* - [L] 

DirectoryIndex index.php 

RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)/([^/]+)?$ index\.php?page=$1&s=$2&o=$3 [L] 

RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)?$ index\.php?page=$1&s=$2 [L] 

RewriteRule ^([a-zA-Z0-9_-]{3,20})/?$ index\.php?page=$1 [L] 

RewriteRule ^([a-zA-Z0-9_-]{3,20})?$ index\.php?page=$1 [L] 

ErrorDocument 404 /404 

回答

1

你需要弄清楚如何從那些針對distunguish「真實」的子目錄請求index.php文件。我假設你只有一組有限的實際子目錄,並且這些與/page/s/o方案不衝突。例如,如果www.mysite.com/users/x/y是有效的請求,則不能有實際的/users子目錄。

要過濾掉實際子目錄針對性的要求,做一個重寫規則聲明說:「抓獲」真正的子目錄:

RewriteRule ^/realsubdir - [L] 
RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)/([^/]+)?$ index\.php?page=$1&s=$2&o=$3 [L] 
RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)?$ index\.php?page=$1&s=$2 [L] 
RewriteRule ^([a-zA-Z0-9_-]{3,20})/?$ index\.php?page=$1 [L] 
RewriteRule ^([a-zA-Z0-9_-]{3,20})?$ index\.php?page=$1 [L] 

破折號( - )取代部分的意思是:離開路徑不變,即沒有替代發生。