2016-12-21 3 views
1

URLを変更せずに受信URLを取得し、ルートから提供する必要がある。.htaccessルートディレクトリからすべてを提供する

の誰かの種類のであれば: http://example.com/randomdirectory/page.html

それは

http://example.com/page.htmlを果たすなるだろうが、URLは変更されません。

私は次のように近いと感じますが、URLが末尾のスラッシュで終わると失敗します。私はその指標に奉仕したいと考えています。基本的に

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)\/([^.]+.html) /$2 [L] 

、私はちょうどどんなユーザータイプで(ルートで)同じファイルを提供しないようにしたい

答えて

1

あなたが代わりにこのルールを使用することができます。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)/(.*)$ /$2 [L] 
+1

をそれは完璧に動作します。どうもありがとうございました。あなたに時間があり、気にしないなら、ルールの部分が何をしているのか説明できますか? – gin93r

+1

'(。+)/'はURLの最後の '/'にマッチし、 '(。*)'は最後の部分とマッチします。次に、2番目のキャプチャグループのバックリファレンスである '/ $ 2'と '$ 2'の前の'/'を使用して、ターゲットがウェブサイトのルートにルーティングされていることを確認します。 – anubhava

+1

私はそれを探しました。私は '(。+)'が何をしているのか不思議でした。私はとても近かった。もう一度@anubhavaに感謝します。 – gin93r

関連する問題