2010-07-03 102 views
0

我試圖做這樣的事情......使用htaccess將目錄重定向到文件?

重定向mysite.com/directory/要mysite.com/directory/do

但只有當「/目錄/」打開無指向一份文件。我知道「DirectoryIndex」可以提供幫助,但我希望文件的名稱(即「do」)出現在用戶看到的url中。有沒有辦法使用.htaccess來完成此操作?

在此先感謝!

回答

-1
RewriteEngine On 

RewriteCond %{REQUEST_URI} ^/redeem/surveys/$ [NC] 
RewriteCond %{REQUEST_URI} !-f 
RewriteRule ^(.*)$ /redeem/surveys/do$1 [L,R=301] 

這有效......但可以更好......?

1

如果我理解正確的話,你想是這樣的:

RewriteEngine On 
# Only redirect if we're in /directory/ and *not* pointing at 
# a file that already exists in the filesystem 
RewriteCond %{REQUEST_URI} ^/directory/ 
RewriteCond %{REQUEST_URI} !-f 
RewriteRule . /directory/do [R,L] 

另外,如果你的意思是「當用戶訪問的URL mysite.com/directory/句號」,這在第二個想法,你可能,這也能發揮作用:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/directory/$ 
RewriteRule . /directory/do [R,L] 

編輯:在情況/做的不是一個實際的文件:

RewriteEngine On 

RewriteCond %{REQUEST_URI} ^/directory/ 
RewriteCond %{REQUEST_URI} !^/directory/do$ 
RewriteCond %{REQUEST_URI} !-f 
RewriteRule . /directory/do [R,L] 
+0

奇怪的是,我無法讓你的第一個代碼段工作。 .htaccess文件位於根目錄的子目錄中,因此我將兩個實例中的「/ directory /」更改爲「/ redeem/surveys /」,但沒有骰子。有任何想法嗎? – mattsven 2010-07-05 13:11:11

+0

我犯了一個錯誤,認爲/ do是一個實際存在的文件系統文件,但它很可能不是。如果是這種情況,請參閱編輯。如果該目錄中「存在」的其他內容也不是真實文件,那麼也有一個解決方案,但我承認在那個時候有更好的方法可以使用腳本來解決它。 – 2010-07-06 02:27:19

相關問題