2017-10-05 7 views
1

リダイレクトに問題があります。今、私は次のようにアドレスに1ページを持っている:Apache - リダイレクト - パス

同じディレクトリにも
http://localhost/Stella/Wiki/index.php 

私はindex.phpへのすべての要求をリダイレクトする必要があり、私の.htaccessファイルを、持っています。 「私は多くのサブフォルダを持っているつもりですので、絶対パスを含まないよう

RewriteCond %{REQUEST_URI} !^/index.php 
RewriteRule (.*)$ /index.php?id=$1 [L,QSA] 

、と私はドン:

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/Stella/Wiki/index.php 
RewriteRule (.*)$ /Stella/Wiki/index.php?id=$1 [L,QSA] 

このリダイレクションは、本当に良い作品が、私は次のように、相対的な方法でそれを使用したいです長い規則を持つようにしたくない:/xxx/xxx/xxx/xxx/index.php

この問題を解決するのに手伝ってもらえますか?私は何をすべきか、それが可能なのかどうかわからないのですか?あなたが示唆したように

RewriteRule ^index\.php$ - [L] 
RewriteRule (.*) index.php?id=$1 [L,QSA] 

が、これは今相対パスを使用しています。.htaccess/Stella/Wiki/.htaccessに配置されている場合

答えて

1
RewriteCond %{REQUEST_URI} !^/Stella/Wiki/index.php 
RewriteRule (.*)$ /Stella/Wiki/index.php?id=$1 [L,QSA] 

その後、あなたのようなこれらのディレクティブを書くことができます。相対パスはスラッシュで始まらないことに注意してください。スラッシュプレフィックスを使用すると、ルート相対(つまり、サイトのドキュメントルートからの相対パス)になります。

ディレクトリごとに相対パスを使用すると、ディレクトリプレフィックス(.htaccessファイルがあるファイルシステムパス)が末尾に追加されます。したがって、index.phpは、.htaccessファイルがあるディレクトリにあります。これをRewriteBaseディレクティブで上書きすることができます。

しかし、これはあなたの指示とは少し異なります。 条件の代わりに、ターゲットURLをまだ要求していない場合にのみディレクティブを処理します。そのURLが既に要求されている場合、それ以上のディレクティブが処理されないようにする例外があります。

ただし、これはすべての要求をindex.phpに送信することに注意してください(元の指令のとおり)。既存のファイルやディレクトリの要求を含む - それが懸念される場合は?

関連する問題