我試圖做這樣的事情......使用htaccess將目錄重定向到文件?
重定向mysite.com/directory/要mysite.com/directory/do
但只有當「/目錄/」打開無指向一份文件。我知道「DirectoryIndex」可以提供幫助,但我希望文件的名稱(即「do」)出現在用戶看到的url中。有沒有辦法使用.htaccess來完成此操作?
在此先感謝!
我試圖做這樣的事情......使用htaccess將目錄重定向到文件?
重定向mysite.com/directory/要mysite.com/directory/do
但只有當「/目錄/」打開無指向一份文件。我知道「DirectoryIndex」可以提供幫助,但我希望文件的名稱(即「do」)出現在用戶看到的url中。有沒有辦法使用.htaccess來完成此操作?
在此先感謝!
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/redeem/surveys/$ [NC]
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^(.*)$ /redeem/surveys/do$1 [L,R=301]
這有效......但可以更好......?
如果我理解正確的話,你想是這樣的:
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]
奇怪的是,我無法讓你的第一個代碼段工作。 .htaccess文件位於根目錄的子目錄中,因此我將兩個實例中的「/ directory /」更改爲「/ redeem/surveys /」,但沒有骰子。有任何想法嗎? – mattsven 2010-07-05 13:11:11
我犯了一個錯誤,認爲/ do是一個實際存在的文件系統文件,但它很可能不是。如果是這種情況,請參閱編輯。如果該目錄中「存在」的其他內容也不是真實文件,那麼也有一個解決方案,但我承認在那個時候有更好的方法可以使用腳本來解決它。 – 2010-07-06 02:27:19