簡體   English   中英

www目錄中的幾個站點。 .htaccess問題

[英]Several sites in www dir. .htaccess problems

我在www目錄中有幾個Phalcon應用程序。

該結構如下所示:

www/
  /app1
      .htaccess
      /public
          .htaccess
          index.php
      /app
  /app2
      .htaccess
      /public
          .htaccess
          index.php
      /app

應用程式根目錄中的.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule  ^$ public/     [L]
    RewriteRule  (.*) public/$1 [L]
</IfModule>

.htaccess在公共目錄中

AddDefaultCharset UTF-8
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]

我是從Phalcon文檔中獲得的。 如果鍵入任何相關的網址(例如example.com/app1/page),我將獲得正確的頁面。 但是我的主頁有問題。 瀏覽器重定向到example.com/app1/public。

我需要htaccess的幫助,我花了3個小時來尋找解決方案,但沒有成功。

我無法使用虛擬主機解決此問題。

這可能是由mod_dir引起的。 默認情況下,mod_dir會將缺少斜杠的目錄的每個請求重定向到包含斜杠的URL。 由於mod_dir和mod_rewrite都應用於同一請求,因此發生了奇怪的重定向。 像這樣:

  1. 要求/app1
  2. mod_dir看到請求針對目錄,將請求重定向到/app1/
  3. 該請求(現在為/app1/ )繼續通過處理管道
  4. mod_rewrite看到請求並應用重寫規則,該請求現在為/app1/public/
  5. 在管道的末尾,該請求被重定向,因為它已被mod_dir標記
  6. /app1/public/出現在瀏覽器的URL位置欄中

為了避免這種情況,您需要關閉mod_dir的DirectorySlash指令。 不過,此重定向確實有一些非常重要的功能。 原因是因為即使有索引文件,也可以在請求目錄時列出目錄的內容而不會在結尾加上斜杠。 因此,為了避免這種情況,您需要確保關閉索引。

因此,在文檔根目錄的htaccess文件中,您需要以下內容:

DirectorySlash Off
Options -Indexes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM