2017-07-15 209 views
0

我在我的代碼所在的同一文件夾中有.htaccess文件。.htaccess重寫規則不起作用

# Turn rewrite engine on 
RewriteEngine on 

RewriteBase/

RewriteRule ^/mobile/list/$ RestController.php?view=all [NC,L] 
RewriteRule ^/mobile/list/([0-9]+)/$ RestController.php?view=single&id=$1 [NC,L] 

Rewritebase添加按照託管服務提供商(https://www.hostinger.in/knowledge-base/489)但是,如果我嘗試加載網址

jobstatuscheck.esy.es/mobile/list/

這不是我的重寫不工作重定向到jobstatuscheck.esy.es/RestController.php?view=all

回答

1

一個RewriteRule作品相對路徑上,而不是一個絕對路徑在動態配置文件中使用時。這是因爲這些文件是相對於它們在文檔層次結構中的位置而被解釋的。這在Apache的重寫模塊的documentation中明確指出。

這意味着你需要在你的模式或一個較爲靈活的方法要麼使用相對路徑(注意額外的問號...):

RewriteEngine on 
RewriteBase/
RewriteRule ^/?mobile/list/?$ RestController.php?view=all [NC,L] 
RewriteRule ^/?mobile/list/([0-9]+)/?$ RestController.php?view=single&id=$1 [NC,L] 

而且一般提示:你應該總是喜歡將這些規則放置在http服務器(虛擬)主機配置中,而不是使用動態配置文件(.htaccess樣式文件)。這些文件出了名的錯誤,很難調試,他們真的放慢了服務器。只有當你不能控制主機配置(讀取:真正便宜的主機服務提供者)或者你有一個依賴編寫自己的重寫規則的應用程序(這是一個明顯的安全噩夢)時,它們才被支持作爲最後一個選項)。