我正在與我的課程上的一個項目與htaccess文件似乎並不工作。我有這樣的:htaccess中的規則衝突
SetEnvIf Request_URI^root=/myroot/
RewriteRule ^(assets|inc) - [L]
RewriteRule ^section[/]?$ %{ENV:root}section/index
RewriteRule ^section/function/(.*)$ %{ENV:root}index.php?type=section&action=function [L]
RewriteCond %{QUERY_STRING} ^(.*)?$
RewriteRule ^section/(.*)$ %{ENV:root}index.php?type=section&action=view [L]
RewriteRule ^index\.php$ - [L]
事實上,有三件事情我不明白:
如果我查詢的網址爲/section/function/
,我應該得到/myroot/index.php?type=section &動作=功能,但我在我的瀏覽器中得到localhost/section/function
,導致錯誤。是雙向翻譯的url:myroot/index.php?type = section & action = function在瀏覽器中出現/section/function/
。如果我刪除最後一行,則會出現空白錯誤頁面,爲什麼是這樣?
編輯:
所以保形什麼奧拉夫Dietsche說,我改變了規則爲
SetEnvIf之後REQUEST_URI ^根=/myroot/
RewriteRule ^(assets|inc) - [L]
RewriteRule ^section[/]?$ %{ENV:root}section/index
RewriteRule ^section/function/(.*)$ %{ENV:root}?type=section&action=function [L]
RewriteCond %{QUERY_STRING} ^(.*)?$
RewriteRule ^section/(.*)$ %{ENV:root}?type=section&action=view [L]
RewriteRule ^index\.php$ - [L]
但是,當我點擊<a href="section/somefunction"></a>
,我我看到一個頁面localhost/section/some function
。我真的不知道是怎麼回事錯....
謝謝你的解釋。當然,我的確已將RewriteEngine設置爲開啓,但它仍然無效,爲什麼呢? – user1611830
@ user1611830我在我的測試環境中試過規則,並且它們工作,*將''/ section/function'重寫爲'/ myroot/index.php'。沒有error.log消息,很難說。例如,如果'/ myroot /'不是子目錄,而是*文檔根目錄*,則不能將其預先加入到'index.php'中。如果它是一個子目錄,那麼它可能沒有'index.php'。 PHP腳本本身可能存在一些錯誤,等等...... –
對不起,我不想打擾你。但的確,/ myroot是根文件夾,所以我更新了我的規則(請參閱我的規則),但它沒有任何更改 – user1611830