首頁>Program>source

我希望有一種方法可以使用mod_rewrite和Apache,但是也许還有另一種方法可以考虑。

在我的網站上,我為目錄重新設置了網站的皮肤版本.如果網站根是 /home/blah/www ,客戶端目錄為 /home/blah/www/clients/abc .当您通過web瀏覽器訪問客戶端目錄時,我希望它使用客戶端目錄中所有請求的檔案(如果存在).否則,我希望它使用web根目錄中的檔案。

例如,假設客戶不需要自己的 index.html .因此,某些代碼將確定没有 index.html/home/blah/www/clients/abc 而是在 /home/blah/www中使用一个 .請記住,我不想隨時將客戶端重定向到web根,如果客戶端目錄未指定其自己的副本,我只想使用具有该名稱的web根檔案. web瀏覽器仍應指向 /clients/abc 檔案是否存在於此或根目錄中.同樣,如果有要求 news.html 在客戶端目錄中,並且確實存在,然後只提供该檔案而不是網路根目錄的 news.html .使用者的體驗應该是無缝的。

我需要它来處理任何檔案名的請求.例如,如果我需要在 .htaccess中添加新行 對於我可能要重定向的每个檔案,由於需要进行過多的維護,並且由於檔案數量太多,因此很有可能出錯。

在您的示例中,請指出您的代碼是放在客戶端目錄的.htaccess檔案還是web根目錄中.首選web根。

最新回復
  • 5月前
    1 #

    # If requested resource exists as a file or directory, skip next two rules
    RewriteCond %{DOCUMENT_ROOT}/$1 -f [OR]
    RewriteCond %{DOCUMENT_ROOT}/$1 -d
    RewriteRule (.*) - [S=2]
    #
    # Requested resource does not exist, do rewrite if it exists in /archive
    RewriteCond %{DOCUMENT_ROOT}/archive/$1 -f [OR]
    RewriteCond %{DOCUMENT_ROOT}/archive/$1 -d
    RewriteRule (.*) /archive/$1 [L]
    #
    # Else rewrite requests for non-existent resources to /index.php
    RewriteRule (.*) /index.php?q=$1 [L]
    

    如果檔案不存在,則从"重寫"中获取

    How

    如何處理?

    # If requested resource exists as a file or directory go to it
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule (.*) - [L]
    # Else rewrite requests for non-existent resources to /index.php
    RewriteRule (.*) /index.php?q=$1 [L]
    

  • 5月前
    2 #

    上面的每个示例似乎都存在至少一个問题. %{DOCUMENT_ROOT} 在某些地方似乎做錯了事,有些 字元似乎丢失.這是我的解決方案,適用於 / 在網路根目錄中。

    除了使用两條規則(一條用於在clients /下的檔案的情况,另一條未找到的),我需要檢查的是所請求的檔案(或目錄)是否不存在.因為如果存在,則不需要更改,因此可以只使用客戶端目錄中提供的檔案.這是我確定的代碼:

    .htaccess
    

    感谢您的帮助!

  • 5月前
    3 #

    RewriteEngine on
    RewriteCond %{DOCUMENT_ROOT}/clients/$1/$2 !-f
    RewriteCond %{DOCUMENT_ROOT}/clients/$1/$2 !-d
    RewriteRule ^clients/([^/]+)/(.*)$ $2 [L]
    

  • 5月前
    4 #

    尝試一下:

    RewriteCond %{REQUEST_FILENAME} !-f
    
    RewriteEngine on RewriteRule ^clients/abc/ - [L] RewriteCond %{DOCUMENT_ROOT}clients/abc/$0 -f RewriteRule .* clients/abc/$0 [L]

  • c:如何在Linux的使用者空間中找到變數的物理地址?
  • c#:加密appconfig檔案