我有一個本地內部網使用mod_rewrite,它有一個用於運行用戶應用程序的框架,在某些情況下也需要mod_rewrite,但是我無法將兩者結合在一起玩。mod_rewrite在多個htaccess一起工作
我想要特定的應用程序有自己的.htaccess
重寫URL,而不必擔心重寫框架需要執行。因此,應用程序應該重寫URL的一部分,並讓框架從那裏接管。
首先,代碼:
該應用程序的框架.htaccess
在/intranet/apps
:
RewriteEngine On
RewriteRule ^([^\/]+)\/([^\/.]+)\/\?(.+)$ $1/index.php?screen=$2 [QSA,NC,L]
RewriteRule ^([^\/]+)\/([^\/.]+)\/?$ $1/index.php?screen=$2 [QSA,NC,L]
該應用程序特有的.htaccess
在/intranet/apps/myapp
:
RewriteEngine On
RewriteOptions inherit
RewriteRule ^export\/([0-9]+)\/?$ export/?pid=$1 [QSA,NC,L]
此應用具有輸出功能,其接受某個ID進行處理。因此,要打破下來:
URL:由.htaccess
的應用程序特定的www.intranet.com/apps/myapp/export/?pid=99
:www.intranet.com/apps/myapp/export/99
應該重寫
URL。 現在,該框架應接管:
URL:www.intranet.com/apps/myapp/export/?pid=99
到
URL:www.intranet.com/apps/myapp/index.php?screen=export&pid=99
我的應用程序工作得很好,所以框架不會重寫,因爲它應該,但是一旦應用程序特定的重寫進入遊戲,該頁面就會崩潰並丟回404
就我的理解,這個場景首先處理特定於應用程序的重寫,然後通過RewriteOptions inherit
,接下來處理父級的重寫。
令人沮喪的是,在應用程序特定的.htaccess
中只有RewriteEngine on
就足以將其分解爲位。我明顯錯過了一些東西,但我似乎無法解決問題。
這正是我需要的;我把它放在應用程序框架htaccess中,所以應用程序開發者不必擔心它,並且像魅力一樣工作。 – Pantalaimon 2014-10-04 08:47:06