2017-11-01 11 views
1

非常に基本的な質問私は確信していますが、ソリューションのオンラインを見つけることができないようです。Apache Webserver Redirect

私は、仮想ホスト構成を持つApache Webserver(Apache/2.4.6)を持っています。

DocumentRoot /path/to/content/folder 

<Directory /path/to/content/> 
        RewriteEngine On 
        Order deny,allow 
        Require all granted 
        RewriteRule "^/p1$" "/p1/" 
</Directory> 

私が埋め込まれたJavaScriptリダイレクト(私の選択、コードが私に手渡してきたではない)とのhtmlファイルを返す/ P1 /に座って.htaccessファイルを持っています。

/p1を持つ受信リクエストを/ p1 /フォルダにリダイレクトして、内部にあるデフォルトの.htmlファイルでリダイレクトするように設定しようとしています。

これは、DirectorySlashをオフにすることも、エイリアスを有効にすることもできますか?つまり、これを行うための書き換えルールを持つことは可能でしょうか?末尾を作るために

+0

ここからは、/ p1 /へのリクエストを/ p1 /というフォルダにリダイレクトしようとしています。それがデフォルトでどこに行くのでしょうか?あるいは、 'p1'の配置が変わるURLがあると言っていますか? – nickstaroba

+0

申し訳ありませんが、 "/ p1"で終わるURLを "/ p1 /"フォルダにリダイレクトしようとしています - 最終結果は/p1と入力すればタイムアウトにならず、代わりにリダイレクト/p1 /(これはフォルダです)。 – Jesse

+0

URLの例を含めてください。 – nickstaroba

答えて

1

は、このオプションの使用を大幅に削減:

RewriteRule "^p1\/?$" "/p1/" 

^$は、私たちのアンカーです。

\/は、単一のスラッシュ(バックスラッシュはエスケープ文字です)と一致します。

?は、前の一致を任意にします。だから我々はあなたがまた何かを試みることができる\/?

で、オプションのURLの末尾にスラッシュを作った

はこれをうそ:

RewriteRule "^(.+)\/?$" "/$1/" 

(.+)は、すべてのものと一致したし、我々は、オプションの最後のスラッシュ(.+)\/?

を追加します

/$1/は、かっこで照合されたものに書き換えます。

だから、URL /foo/barfoo/bar/

そして/bar/fooにリダイレクトし、リダイレクトは今動的である/bar/foo/

にリダイレクトします。

Hereは、正規表現のまともな紹介です。

Thisも、正規表現パターンを整理するための参考文献です。

+0

にあります。私は両方を試みましたが、私は書き直しが起こっているようには見えません。私はRewriteモジュールが有効になっていることを確認しました。これは正解であると確信していますので+1します。このセットアップで何かする必要があります(ELBの背後に座っている可能性があります)。私が得ることができるベストは、/ p1から/ p1 /への301リダイレクトです。 – Jesse

関連する問題