2014-05-01 46 views
0

我看了看周圍,我一直無法找到我的確切問題的答案。.htaccess,RewriteEngine和文件夾結構

我不知道這是否是最好的文件夾結構有我的服務器上,但是這是它看起來像基本

  • /
    • 的.htaccess
    • [] CSS
    • []圖片
    • index.php
    • []其他網站
      • []位點1
      • []站點2
        • 的index.html
        • [] sub.site2.com
          • 的index.php

也許很明顯:

mySite.com進入根目錄。 Site1.com轉到site1.com子文件夾。 Site2.com轉到site2.com子文件夾。而sub.site2.com是進入子文件夾的站點內2

我的問題一個子域,我不能得到的.htaccess在根文件夾中剝離.html和從.PHP所有的網站和子網站。這是我到目前爲止有:

DirectoryIndex index.php index.html 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 

上面的代碼不允許我進入「網站2」,但情感上去掉.php爲關閉根部位。這是一個不好的方式來處理我的文件夾結構?我可以讓我的根目錄下的.htaccess影響所有文件夾,還是我需要在每個子文件夾中分開.htaccess文件。

此外,該網站內的鏈接看起來像這樣

<a href="about">About</a> 

而不是

<a href="about.php">About</a> 

與htaccess文件正常工作是正確的?

+0

你似乎有某種嵌套的webroot結構,這通常不是你怎麼做的。給每個(子)域自己的webroot:'/ sites/site1.mydomain.com','/ sites/site2.mydomain.com'和'/ sites/sub.site2.mydomain.com'。然後爲每個webroot添加一個'.htaccess'來處理你需要爲那個域重寫的內容。 – Halcyon

回答

0

問題是我無法在根文件夾中獲取.htaccess從所有網站和子網站去除.html和.php文件。

這是因爲在根文件夾中的htaccess文件是外面的文檔根爲site1.com,site2.com等網站。他們無法遍歷「site1」文件夾。

此外,您的規則將永遠不會工作,因爲您的條件只適用於第一條規則,第二條規則具有自由統治權重寫所有內容並導致循環。你需要複製你的條件:

DirectoryIndex index.php index.html 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 

因爲你的根htaccess文件是由site1.com/site2.com/etc網站完全不可訪問,你需要複製在每個站點的那些規則。

+0

現在看起來很明顯。謝謝! –