我有我的網站有兩個本地化的內容,即EN和FR和內容將通過網址呈現:http://www.example.com/en/
和http://www.example.com/fr/
基於目錄的錯誤頁面的重定向
我想要實現不同的錯誤頁面的每個區域設置的,但我不知道如何通過重定向/虛擬主機配置來實現。
我讀了不同的.htaccess
文件爲每個目錄但沒有工作。
幫助會很好。提前致謝。
我有我的網站有兩個本地化的內容,即EN和FR和內容將通過網址呈現:http://www.example.com/en/
和http://www.example.com/fr/
基於目錄的錯誤頁面的重定向
我想要實現不同的錯誤頁面的每個區域設置的,但我不知道如何通過重定向/虛擬主機配置來實現。
我讀了不同的.htaccess
文件爲每個目錄但沒有工作。
幫助會很好。提前致謝。
具有不同的.htaccess
工作得很好,例如,
/-+- en -- .htaccess
|
+- fr -- .htaccess
而且在/en/.htaccess
,你有
ErrorDocument 404 /path/to/en/error404.html
與/fr/.htaccess
ErrorDocument 404 /path/to/fr/error404.html
你也可以把錯誤的文件在同一目錄下,並推而廣之區分一樣,例如error404.en.htaml
和error404.fr.html
。你分別
ErrorDocument 404 /path/to/error404.en.html
和
ErrorDocument 404 /path/to/error404.fr.html
有則。
如果你不想使用.htaccess
文件,你可以達到同樣的用Directory
或Location
指令。在主或虛擬主機配置,這看起來就像
<Directory "/path/to/example.com/en">
ErrorDocument 404 /path/to/error404.en.html
</Directory>
<Directory "/path/to/example.com/fr">
ErrorDocument 404 /path/to/error404.fr.html
</Directory>
的<Location>
指令類似於。
使用Location指令的最後方法奏效!謝謝@Olaf –
在Apache的2.4,你可以使用表達式:
# for /fr/ URIs
<If "%{REQUEST_URI} =~ m#^/fr/#">
ErrorDocument 404 /fr-404.html
</If>
# for /en/ URIs
<If "%{REQUEST_URI} =~ m#^/en/#">
ErrorDocument 404 /en-404.html
</If>
Check Apache 2.4 expression reference。
如果你還是堅持了Apache 2.2的,那麼你可以使用:
RewriteEngine On
# for /fr/ URIs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^fr/ /fr-404.html [L]
# for /en/ URIs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^en/ /en-404.html [L]
但是請記住,Apache 2.2的解決方案將返回200
狀態給客戶。
@anubhava:它們不是實際的物理目錄,而是代理文件系統中的其他文件。 –
也告訴我你的Apache版本? – anubhava
@anubhava Apache 2.2 –