URLからサブディレクトリを非表示にしようとしています.htaccessです。クライアントがウェブサイトに入るたびに実行されるPHPスクリプトがあります。 Apacheのルートディレクトリにあるindex.php
です。このスクリプトは、の言語をWebサイトで使用するように決定し、ターゲットディレクトリにリダイレクトします。英語は私のデフォルト言語ですので、"en"ディレクトリはURLに隠され、同時にルートディレクトリのすべてのURLリクエストは"en"フォルダにリダイレクトされ、404 HTTPエラー。要求は、このURLが再び表示されディレクトリ「EN」に転送されている場合.htaccess URLから特定のサブディレクトリを常に非表示にします
#Remove en/ directory from URL
RewriteRule ^$ en/
#Forward all the requests to en/ directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ en/$1
:私は、部分的に以下の行でこれを達成しました。これは、流れのようになります。
- ユーザーのタイプ:それは、検出言語
- .htaccessのルールが隠し/ディレクトリ途中、URLにhttp://domain.com
- クライアントの種類を残してだからhttp://domain.com
- のindex.phpはhttp://domain.com/enにリダイレクトhttp://domain.com/panelが自分のユーザパネルにアクセスするには
- の.htaccessはhttp://domain.com/en/panel
"en"ディレクトリから削除するには、リスト内の最後の操作の後にURL http://domain.com/panelを残しますか?この動作を管理するより良い方法はありますか?
現在のルール:
Options -Indexes +FollowSymlinks -MultiViews
ErrorDocument 404 /404.php
RewriteEngine On
RewriteRule ^/?$ en/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^((?!en/).*)$ en/$1 [L,NC]
#Prevent direct access to PHP Scripts
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule \.php$ - [R=404,L]
#Remove WWW
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
私は以前と同じ動作をしています。注:.htaccessファイルはルートディレクトリにあります。 – ProtectedVoid
ちょうど完全な.htaccessを追加しました – ProtectedVoid
私は同じようになっています。キャッシュをクリアしたことを確認しました。 Extra note: "en"以外のディレクトリにアクセスしようとすると、404エラーが発生します。たとえば:http://domain.com/esは404エラーを返します( "es"ディレクトリは "en"と同じです) – ProtectedVoid