私は多言語のWebサイトで.htaccessを使用して、素晴らしいSEOのURLを変更しています。.htaccessすべてのディレクトリに403が許可されています
デフォルトでは、すべてのフォルダは403禁止で制限されていますが、2つのパスで例外を作成する必要があります。 /de
および/en
。はい、これらのパスは、多言語のためのものであり、私のようなページがある場合:
www.mywebsite.com/en/page
をそれが正常に動作していますが、私はこのようなリンクをメインページに戻りしようとすると:
www.mywebsite.com/en
それは403を示しています禁止されています。あなたは私が/en
へのアクセスを許可しようとしたが、それは動作しません見ることができるように、最後の行で
RewriteEngine on
#remove .php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
#redirect lang
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/(.*)$ $2.php?lang=$1 [L]
RewriteCond %{REQUEST_URI} !/en
:ここ
は私の完全なコードです。
これらのパスへのアクセスを許可するにはどうすればよいですか:/en
と/de
?
EDIT:検索の多くの後
、私はDrupalの上で作られている同じサーバー上のメインウェブサイトこと、それは自身の.htaccessファイルを持っており、それが新しい上禁止さ403を示している理由です見つけましたウェブサイト(カスタムCMS)は別のフォルダ内にあります。しかし、私がと入力すると、メインWebサイトから.htaccessをテストとして削除すると、新しいWebサイトに404が見つかりません。私はそれは単にインデックスページにリダイレクト www.mywebsite.com/en
を入力する場合は発生しません
。
ページが/team
だった場合、それは/en/team
のように機能し、フロントページにそれがこの/en/
、ない/en
のように働くので、ダブルチェックの後、私は、自動的に言語を変更する私のウェブサイト上の言語スイッチャーを見ることができます。
EDIT2
私はw3dk答えをたどってきましたが、それはまだ同じエラーが表示されます。
RewriteEngine on
#remove .php
#RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)/?$ $1/index
#redirect lang
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/(.*)$ $2.php?lang=$1 [L]
言語スイッチャー機能を壊すRewriteRule ^([^\.]+)/?$ $1/index
この行: これは私がしようとしている完全なコードです。例の場合/de/team
はドイツのコンテンツに変更されません。今、私はその行をコメントしました。「正しく機能していないからです。
私はあまりにも私の言語スイッチャーからコードを掲示しています:
<?php
$currentURL = basename($_SERVER['REQUEST_URI']);
?>
<ul class="language-switcher">
<li><a href="/de/<?php echo $currentURL; ?>">DE</a></li>
<li><a href="/en/<?php echo $currentURL; ?>">EN</a></li>
</ul>
私は
www.mywebsite.com/en/team
このページを入力し、その後、ドイツ語版の言語スイッチャーをクリックすると、それが正常に表示さ
www.mywebsite.com/de/team
:ドイツ語コンテンツやURLは次のようです10しかし、私はこのURLを持っているフロントページに行けば:
www.mywebsite.com
とドイツ語版に言語スイッチャーをクリックURLは次のようになり、それが403または404ページを示しています
www.mywebsite.com/de/
私はどこかのサーバーのセットアップに推測します。残念ながら、このウェブサイトは共有ホスティングにあり、Apacheの設定にアクセスすることはできません。 – user2519032
'/ en'はファイルシステム上の物理ディレクトリですか?そのディレクトリに 'DirectoryIndex'文書がない場合、403はデフォルトの応答になります。 – MrWhite
いいえ、 '/ en'は物理ディレクトリではありません。これにはどんな解決策がありますか? – user2519032