2011-03-23 42 views
10

就像很多Web開發人員一樣,我喜歡使用.htaccess通過單個輸入點將所有流量定向到一個域,當請求不適用於存在於公共服務目錄中的文件。.htaccess配置符號鏈接和索引文件不能按預期工作

因此,像這樣:

RewriteEngine On 
# enable symbolic links 
Options +FollowSymLinks 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+) index.php [L] 

這意味着如果請求不是一個CSS文件或圖像,我的index.php獲取請求,我可以選擇做什麼(服務於一些內容或可能是404)

工程很好,但我偶然發現了一個它似乎無法幫助我解決的問題。

我的文檔根目錄如下:

asymboliclink -> /somewhere/else 
css 
.htaccess 
img 
includes 
index.php 

然而,Apache不看的符號鏈接到一個目錄的目錄。它將請求傳遞給我的index.php。我想爲鏈接提供鏈接,就像它是一個文件夾一樣,因爲它是鏈接到具有自己index.php的文件夾的鏈接。我可以在瀏覽器的地址欄中輸入http://example.com/asymboliclink/index.php,但我希望能夠通過它訪問http://example.com/asymboliclink

我需要添加到我的.htaccess文件才能實現此目的?

回答

17

使用-l開關測試一個符號鏈接

RewriteEngine On 
# enable symbolic links 
Options +FollowSymLinks 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+) index.php [L] 

文檔

​​- 爲「Ctrl + F鍵將TestString視爲一個路徑名並測試它是否存在,並且是一個符號鏈接。「

12

-l標誌引用符號鏈接

RewriteEngine On 
# enable symbolic links 
Options +FollowSymLinks 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+) index.php [L]