2009-06-30 176 views
5

我想使用沒有尾部斜線的頁面。所以現在我希望我的網址有一個結尾的斜線來重定向(使用.htaccess)到同一個網址,而不需要斜線。刪除尾部斜線

我有兩個.htaccess文件:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteRule (.*) public/$1 
</IfModule> 

,一個在我的公用文件夾:

DirectoryIndex index.html index.php 
Options -Indexes 

<IfModule mod_rewrite.c> 
    RewriteEngine On   
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f   
    RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 
</IfModule> 

我嘗試添加以下規則來在公共文件夾中的.htaccess文件:

RewriteRule (.*)/$ $1 [R,L] 

但之後: example.com/public/page/view/2/

重定向到: example.com/**D:/webserver/**public/page/view/2

這顯然不是我想要的......

+0

我不確定如何解決您的問題,但我不確定這是否真的是您應該做的。 根據我的理解,請求這樣的網址:http://www.example.com/myDir將用戶實時重定向到http://www.example.com/myDir/。 這種額外的重定向可以用尾部斜線來避免。該斜線明確指出「myDir」是一個目錄而不是文件。 – nikmd23 2009-06-30 14:22:51

+0

您是否在說尾部斜線是某種正式/標準/默認記號的一部分。 在這種情況下,我有類似的問題。我如何重定向以添加尾部斜槓;-) – Erik 2009-06-30 14:24:55

+0

由於您實際上並未嘗試重定向到某個目錄,所以尾部的斜槓根本無法幫助您 - 事實上,它不會以任何方式或任何方式執行任何操作其他。你應該跟隨任何你感到滿意並且在你的使用中保持一致 – Fake51 2009-07-04 11:17:15

回答

1

爲什麼ÿ你有幾個.htaccess文件?在哪裏重新定向到公共/ $ 1存儲?你可能會面臨壓倒性的RewriteRule指令,這些指令會讓你的事情變得複雜。

不知道你的設置很難說你應該如何使用重寫 - 你能指定什麼東西實際上看起來像?

1

您是否嘗試過加入:

RewriteBase /public 

.htaccess文件中的公用文件夾,可以得到:

<IfModule mod_rewrite.c> 
    RewriteEngine On    
    RewriteBase /public 

    RewriteRule (.*)/$ $1 [R,L] 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f   
    RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 
</IfModule> 
+0

剛剛嘗試過,但它不會重定向。 – Erik 2009-06-30 14:37:55

1

這裏是一個由Apache文檔的例子,你可以用它來解決你的問題:

尾隨斜線問題

說明:

每一個網站管理員可以唱的問題一首歌引用目錄的URL的尾部斜槓。如果它們丟失了,服務器會拋出一個錯誤,因爲如果你說/〜quux/foo而不是/〜quux/foo /,那麼服務器搜索一個名爲foo的文件。並且因爲這個文件是一個它抱怨的目錄。實際上,它試圖在大多數情況下解決它自己,但有時候這種機制需要你模擬。舉例來說,你已經做了很多複雜的URL的重寫後的CGI腳本等

解決方案:

這個微妙問題的方案是讓服務器自動添加後綴斜槓。爲了正確地做到這一點,我們必須使用外部重定向,以便瀏覽器正確地請求後續圖像等。如果我們只進行了內部重寫,這隻適用於目錄頁面,但是當任何圖像包含在此頁面時會出錯與相對URL,因爲瀏覽器會請求一個內聯對象。例如,在/ ~quux/foo/index.html中對image.gif的請求將變爲/ ~quux/image.gif,而無需外部重定向!

所以,應該這樣寫:

RewriteEngine on 
RewriteBase /~quux/ 
RewriteRule ^foo$ foo/ [R] 

瘋狂的和懶惰甚至可以做以下的在他們的主目錄的頂級.htaccess文件。但請注意,這會造成一些處理開銷。

RewriteEngine on 
RewriteBase /~quux/ 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^(.+[^/])$ $1/ [R] 

Source

2

WordPress會根據您的永久鏈接結構是什麼重定向。因此,對.htaccess所做的任何更改都不會有什麼幫助,因爲Wordpress會爲您添加/刪除它們,並在.htaccess完成之後執行wp_redirect()。在最糟的情況下,你最終會得到一個重定向循環。

解決方案是關閉Wordpress重定向使用。

// perhaps an if(is_something()) before here ... 
add_filter('redirect_canonical', '__return_false'); 

你應該把這個包if語句或內部,在那裏你進行一定頁/目錄/ etc檢查。把上面的代碼直接放在你的函數文件中會關閉wordpress的重定向並且可能會破壞你的東西。