2017-02-28 6 views
0

複数の条件で成功しないで.htaccessでルールを作成しようとしています。唯一の "ポートフォリオ・ビュー" ではなく "#CBP =" が含まれているURLを http://www.domain.com/#cbp=http://www.domain.com/portfolio-view/my-project-name/複数のURL条件でhtaccessを設定する

http://www.domain.com/portfolio-view/my-project-name/

はにリダイレクト:

は、私のようなすべての要求を必要としています。

私はそれをしようとしていますが、無限ループを作成します。

また、私はそれをしようとしているが、それは動作しません:あなたは実際にのみ要求が文字列/portfolio-view/で始まるかどうかを確認する必要が

RewriteEngine On 
RewriteBase 
RewriteCond %{REQUEST_URI} ^/portfolio-view/.* 
RewriteRule ^(.*)$ http://www.domain.com/#cbp=%{REQUEST_URI} [R=301,L] 

答えて

0

この

は正しい結果を与える必要があります:

RewriteCond %{REQUEST_URI} ^/portfolio-view/.* 
RewriteRule ^(.*)$ http://%{SERVER_NAME}/#cbp=http:\/\/%{SERVER_NAME}%{REQUEST_‌​URI} [R=303,L,NE] 

この1つの条件がtrueあるリテラル/portfolio-view/とURIを開始する(^)の場合。
.*は、次の事項について気にする必要がないことを意味します。

ルールが一致する場合は、すでに/portfolio-viewで始まる場合は/#cbp=で開始できないため、他の条件を確認する必要はありません。

私はテストマシンでテストしてもうまく動作しますが、私はWebサーバーの設定ファイル(サイトで有効になっているディレクトリの下にありますが、これは私が推奨します)で行いました。

私はhtaccessファイルで試しましたが、上記の例はまったく同じです。

.htaccessファイルがWebサイトのベースディレクトリにある場合、RewriteBaseディレクティブを単に省略することができるようです。私は私のテストサーバー上であなたの例を試してみましたが、それは私の.htaccesが今どのように見えるかです:私のテストマシンで

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/portfolio-view/.* 
RewriteRule ^(.*)$ http://%{SERVER_NAME}/#cbp=http:\/\/%{SERVER_NAME}%{REQUEST_‌​URI} [R=303,L,NE] 

が、それは正しくリダイレ​​クトします。さらに読書のために

私はお勧め:

+0

ありがとうTakiro、私は上記の質問に詳しい情報を掲載しました。私はそれを試みていますが、それは動作しません... – Javier

+0

さて、確かに私は確信していませんが、私は再書き込みのベースが '/'に設定されているため、最初の/条件を削除する必要があると思います。 '^/portfolio-view /.*'を '^ portfolio-view /.* 'に変更する – Takiro

+0

それに応じて変更された回答。 – Takiro

関連する問題