2017-01-28 18 views
1

定的查詢似乎與我使用的一切重定向到的index.php這是我的根文件夾的public_html的方法有問題。應該沒有例外這是當然的,除非文件夾關閉RewriteEngine。爲了簡單起見,我只是說我使用www.example.com作爲我的網站。瀏覽器似乎表明通過.htaccess進行

我的.htaccess如下所示:

RewriteEngine on 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
  • 作爲一個例子,讓我們在瀏覽器中說,我輸入:www.example.com/test
  • 它在內部重定向,其意:www.example.com/index.php?url=test

問題:

  • 我想瀏覽器簡單地仍顯示:www.example.com/test
  • 但是,瀏覽器現在顯示:www.example.com/test/?url=test

這混亂的名稱只能說明,如果我有一個文件夾命名爲測試根目錄中。如果我刪除該文件夾,它表明:

  • www.example.com/test

然而,如果我再次添加的文件夾,它表明:

  • WWW .example.com/test /?url = test

它仍然正確重定向,但它看起來不再幹淨了。 我很好奇的是究竟是什麼原因導致它的行爲以及如何解決/阻止它。

請注意,我總是想重寫url。所以我不想讓文件夾出現異常。它應該看起來和工作相同,不管有沒有文件夾。


編輯1:根文件夾將是爲public_html,所以example.com(作爲一個例子)


編輯2:問題的改變措辭,問題仍然是相同的。


編輯3:更改了問題的格式。


編輯4:補充說,我想重寫url,不管是否存在或不存在文件夾。

+0

目前我用作解決方案來添加尾部斜線。因此,www.example.com/test將首先轉換爲www.example.com/test/。當使用尾部斜線時,它不會顯示/?url = test。然而,我仍然不知道爲什麼它首先顯示了url參數。 – Rup7ur3

回答

0

你需要在你的.htaccess使用此:

RewriteEngine On 
RewriteRule ^([^/]*)$ /test/?url=$1 [L] 

此代碼將離開你你想要的網址。確保在測試之前清除緩存。

+0

謝謝你的回答,不幸的是它似乎沒有工作。我將問題的措辭和格式更改爲更具體。 – Rup7ur3

0

這可能需要進一步的編輯來完成你想要的,但是使用RewriteCond你可以指定何時實際重寫url的條件。

RewriteEngine On 
RewriteBase/
##perform rewrite only if requested file does not exist... 
RewriteCond %{REQUEST_FILENAME} !-f 
##perform rewrite only if requested directory does not exist... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)$ /test/?url=$1 [L]