私は、.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
リダイレクト時のログ出力と、再マッピングがほぼ同じであることを示すログ出力を比較します。
私は間違っていますか?
のようにそれを試してみて、それが周りに間違った方法ではないでしょうか? https://example.com/applications/258/infobox.xmlにアクセスすると、その情報が必要になります。mod_rewriteはhttps://example.com/app/makeInfoBox/258/にローカルにマップしますが、URLは変更しません。 私のサーバー上でCodeIgniterを取得しましたが、URlは私の関数(コントローラ(app) - >メソッド(makeInfoBox) - >パラメータ(id = 258))へのパスです。 – Fuerro
ブラウザに入力するURL元のURLは何ですか?個別に記載してください。 –
私はhttps://example.com/applications/258/infobox.xmlと入力し、私のApacheは私たちのアプリケーション(id = 258のもの)のデータを会社のCodeIgniter関数に保存するCodeIgniter関数にマップする必要がありますXML形式のCMDB(https://example.com/app/makeInfoBox/258/)。だから私がアクセスしようとしているxmlファイルInfobox.xmlは正確には存在しません、それは単に関数の出力です。 – Fuerro