2017-10-15 111 views
2

我使用.htaccess首次,我遇到一個循環的問題到index.php。我試圖實現以下目標:的.htaccess重寫每一個請求

  1. http://something.com重寫爲http://something.com/main

  2. http://something.com/anything重寫爲http://something.com/index.php?page=anything

到目前爲止,我當前的嘗試看起來像這樣,其工作滿意:

RewriteEngine on 
RewriteBase/

RewriteRule ^/?$ /main [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*)$ /index.php?page=$1 [NC,L] 

但是,我想刪除這兩個重寫條件,以允許請求http://something.com/index.php成爲http://something.com/index.php?page=index.php。刪除兩條RewriteCond行會導致循環,重寫不起作用。

什麼我做錯了,我怎麼能解決這個問題?謝謝!

回答

1

您可以刪除這些條件,但你需要扭轉你的規則和目標的URI刪除前導/

RewriteEngine on 
RewriteBase/

RewriteRule ^(.+)$ index.php?page=$1 [QSA,L] 

RewriteRule ^/?$ main [L] 

還記得,現在你的第一條規則也將改寫CSS/JS /圖像請求index.php?page=... 。如果要避免該情況,請首先在此之前添加此條件RewriteRule

RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|ico|tiff|css|js)$ [NC] 
+0

謝謝!這完全按照我想要的方式工作。重寫適用於Web應用程序,該應用程序從外部CDN動態加載內容。在這種情況下,所有行爲都是通過'index.php'來實現的。 –

相關問題