2016-12-27 31 views
0

我對規則有一點理解問題。它應該工作,但我認爲我錯過了一些東西。幫助是Appriciated :)restfull htaccess重寫條件不適用geting

規則:

<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> 

它shold轉換這個網址:

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

http://sccatdev.office.dig/deploy/ajax/handler.php?path=Approval&class=Artile&method=test連同職位和獲得。

但它semms即時消失的東西。 .htaccess位於ajax文件夾中。

回答

0

有幾個問題:

  1. %{ENV:BASE}作爲一個環境變量不能重寫模式
  2. RewriteRule模式匹配URI相對於當前目錄,而不是完整的路徑匹配使用。

如果.htaccess位於ajax文件夾內,那麼你甚至不需要%{ENV:BASE}變量來改寫。只需使用以下.htaccess:

RewriteEngine On 

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

謝謝你wery很多的指針。 但是你的規則不會被觸發。它位於ajax文件夾中。 – Sangoku

+0

通過在你的'.htaccess'之上放置一些垃圾(隨機)文本,並確定當你在瀏覽器中訪問你的頁面時,它是否會產生500(內部服務器)錯誤,從而驗證你的'.htaccess'是否被啓用。 500錯誤意味着.htaccess已啓用。 – anubhava

+0

是的,它已啓用。現在我正在採取一種解決方法。 – Sangoku