2016-12-27 10 views
0

私はルールに関して少しの理解の問題があります。それは動作するはずですが、私は何かが欠けていると思います。ヘルプがにappriciatedされ:)restfull htaccess書き換え条件が適用されない

ルール:一緒に投稿して http://sccatdev.office.dig/deploy/ajax/handler.php?path=Approval&class=Artile&method=test

http://sccatdev.office.dig/deploy/ajax/Approval/Article/test

となります:

<IfModule mod_rewrite.c> 
    Options -MultiViews 
    RewriteEngine On 
    RewriteCond %{REQUEST_URI}$1 ^(.*?/)(.*)\2$ 
    RewriteRule ^(.*)$ - [E=BASE:%1] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule %{ENV:BASE}^(.+)/(\w+?)/(\w+?)$  %{ENV:BASE}handler.php?path=$1&class=$2&method=$3 [L,QSA] 

</IfModule> 

をそれはこのURLを変換SHOLD。

しかし、それは何かが欠落しています。 .htaccessはajaxフォルダにあります。

答えて

0

いくつかの問題があります。env変数であること

  1. %{ENV:BASE}は、現在のディレクトリへ
  2. RewriteRuleパターンマッチURIの相対的ではなく、完全なパスマッチ書き換えパターンで使用することはできません。

.htaccessajaxフォルダ内に配置された場合、あなたも書き換えること%{ENV:BASE}変数は必要ありません。次の.htaccessをそのまま使用してください:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ handler.php?path=$1&class=$2&method=$3 [L,QSA] 
+0

ポインタの方が嬉しいです。 しかしあなたのルールはトリガされません。これはajaxフォルダにあります。 – Sangoku

+0

あなたの '.htaccess'が有効かどうかを確認するには、あなたの' .htaccess'の上に何らかのゴミ(ランダム)テキストを置き、あなたのページをブラウザで訪れたときに500(内部サーバー)エラーを生成するかどうかを確認してください。 500エラーは.htaccessが有効であることを意味します。 – anubhava

+0

はい有効です。私は今、回避策に目覚めています。 – Sangoku

関連する問題