2012-07-02 24 views
2

我嘗試這樣做,這是一個PHP頁面處理...Javascript功能來使用的htaccess

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteRule \.js$ js.php [L] ## This line is the one I tried to add 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

如果我使用一個標籤<script type='text/javascript' src='http://www.domain.net/myfile.js'></script>我想它要經過js.php

js.php 將處理使用header('....'); echo file_get_contents('myfile.js');

我已經嘗試了這麼多的事情要做到這一點,我曾經在一個項目之前,這樣做,但我不記得在哪裏,現在,我要的文件重做吧:)

希望這是有道理的......

+0

您是否可以從http://www.domain.net/myfile.js訪問myfile.js?實際上,規則RewriteCond%{REQUEST_FILENAME}!-f表示如果文件可以訪問,那麼它必須被提供。如果這個文件不存在,則會應用其他規則。 – fsenart

+0

我仍然需要圖片,雖然...或其他文件,如PDF,MP3等.. – Val

+2

@fhat這些規則低於\ .js規則,它有[L]修飾符。 – madfriend

回答

3

您可以添加以下重寫規則:

RewriteRule ^([^\.]+)\.js$ js.php [NC,L] 

在地方:

RewriteRule \.js$ js.php [L] ## This line is the one I tried to add 

結果是:

http://www.domain.net/myfile.js => http://www.domain.net/js.php 
http://www.domain.net/foo/bar/myfile.js => http://www.domain.net/js.php 

或者你可以做如下:

RewriteRule ^([^\.]+)\.js$ $1.php [NC,L] 

結果是:

http://www.domain.net/myfile.js => http://www.domain.net/myfile.php 
http://www.domain.net/foo/bar/myfile.js => http://www.domain.net/foo/bar/myfile.php 

一些解釋關於用於RewriteRule flags NS:

  • NC:使用[NC]標誌的使重寫規則以不區分大小寫的方式進行匹配。也就是說,它不關心在匹配的URI中字母是大寫還是小寫。
  • L:[L]標誌導致mod_rewrite停止處理規則集。在大多數情況下,這意味着如果規則匹配,則不會處理更多規則。這對應於Perl中的最後一個命令或C中的break命令。使用此標誌來指示當前規則應立即應用,而不考慮其他規則。
+0

這對我有用:)你可以用術語'[NC,L]'的定義更新你的答案,所以我知道它是什麼意思。 – Val

+0

只爲你,它已經完成;) – fsenart

+0

sweeet,它是有道理:)大拇指向上 – Val