2016-09-28 8 views
1

私は、.htaccessファイルを取得しようとしています。これは、WebサービスのいくつかのURLを再マップします。私は私の.htaccessファイルに次のコードを持っている:index.phpを削除mod_rewriteの再マッピングが機能しない

# General Settings 
Options +FollowSymLinks -Indexes 
Allow from all 
AddCharset utf-8 .css .html .php 

RewriteEngine on 
RewriteBase/

# Option 1: Remove Index.php from URL 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

# Custom Options: Webservices 
RewriteRule ^applications/([0-9]+)/infobox\.xml$ app/makeInfoBox/$1/ [L] 

は正常に動作しますので、私はmod_rewriteのが正常に動作していると仮定します。しかし、なぜWebサービスのルールが機能しないのですか?

https://example.com/applications/258/infobox.xmlからhttps://example.com/app/makeInfoBox/258/に変更する必要がありますか?

[R]フラグを追加すると機能しますが、URLをリダイレクトしたくない場合は、再マッピングします。

ありがとうございました!

編集: いくつかのテストの後、私は実際にアイデアが足りなくなったところに達しました。これは私のmod_rewriteコードです:

# General Settings 
AddCharset utf-8 .css .html .php 

RewriteEngine on 
RewriteBase/

# Custom Options: Webservices 
RewriteRule ^applications/([0-9]+)/infobox\.xml$ app/makeInfoBox/$1/ [DPI] 

# Option Remove Index.php from URL 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

これで、ログレベルが高い状態でログオンしました。ここに記録されているものです。

パス情報の接尾辞を追加します。/ etc/apache2の/ htdocsに/ Webサービス/アプリケーション - > /etc/apache2/htdocs/webservices/applications/258/infobox.xml

ストリップパー接頭辞:/etc/apache2/htdocs/webservices/applications/258/infobox.xml - > applications/258/infobox.xml

パターン '^ applications /([0-9] +)/ infobox \を適用しています。 XMLアプリケーション/ 258/infobox.xml '

リライト 'アプリケーション/ 258/infobox.xml「URIに' $' - > 'アプリ/ makeInfoBox/258 /'

追加につき-dirの接頭辞:アプリ/ makeInfoBox/258/- >の/ etc/apache2の/ htdocsに/ Webサービス/アプリ/ makeInfoBox/258/

ストリップあたり-dirの接頭辞:の/ etc/apache2の/ htdocsに/ Webサービス/アプリ/ makeInfoBox/258/- >アプリ/ makeInfoBox/258/

適用パターン '(。*)^ $' URI 'アプリ/ makeInfoBox/258 /'

するRewriteCondへ:入力= 'の/ etc /入力/ '/ etc/apache2/htdocs/webservices/app/makeInfoBox/258 /' pattern = '! - f' =>一致した場合は、apache2/htdocs/webservices/app/makeInfoBox/258/'!-d' =>一致する

リライト 'アプリ/ makeInfoBox/258 /' - > '/index.php?/app/makeInfoBox/258/'

スプリットURI =/index.phpを/アプリ/ makeInfoBox/258/- ?> URI =/index.phpを、引数= /アプリ/ makeInfoBox/258/

置き換えるしようとしている接頭辞は/ etc/apache2の/ htdocsに/ Webサービス//

、交換しようとすると、コンテキストのドキュメントルートは/ etc/apache2の/ htdocsにコンテキストプレフィックス付きの/ webservices

内部リダイレクト/index.php [内部リダイレクト]

ストリップごとのプレフィックス:/etc/apache2/htdocs/webservices/index.php - > index。PHP

適用パターン '^アプリケーション/([0-9] +)/インフォボックス\ .xmlファイル$' URI 'のindex.php' に

ストリップあたり-dirの接頭辞:の/ etc/apache2の/ htdocsに/入力= 'は/ etc/apache2の/ htdocsに/ Webサービス/インデックス: - Webサービス/ index.phpをURI 'index.phpの'

のRewriteCondにパターン '(。*)^ $' を適用する> index.phpを

.php 'pattern ='!-f '=>一致しない

パス/etc/apache2/htdocs/webservices/index.php

リダイレクト時のログ出力と、再マッピングがほぼ同じであることを示すログ出力を比較します。

私は間違っていますか?

答えて

0

は、私はそれを縛られ、この

Options -MultiViews 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^applications/([\d]+)/infobox.xml$ app/makeInfoBox/$1/ [L] 
+0

のようにそれを試してみて、それが周りに間違った方法ではないでしょうか? https://example.com/applications/258/infobox.xmlにアクセスすると、その情報が必要になります。mod_rewriteはhttps://example.com/app/makeInfoBox/258/にローカルにマップしますが、URLは変更しません。 私のサーバー上でCodeIgniterを取得しましたが、URlは私の関数(コントローラ(app) - >メソッド(makeInfoBox) - >パラメータ(id = 258))へのパスです。 – Fuerro

+0

ブラウザに入力するURL元のURLは何ですか?個別に記載してください。 –

+0

私はhttps://example.com/applications/258/infobox.xmlと入力し、私のApacheは私たちのアプリケーション(id = 258のもの)のデータを会社のCodeIgniter関数に保存するCodeIgniter関数にマップする必要がありますXML形式のCMDB(https://example.com/app/makeInfoBox/258/)。だから私がアクセスしようとしているxmlファイルInfobox.xmlは正確には存在しません、それは単に関数の出力です。 – Fuerro

関連する問題