2012-03-13 101 views
2

以下規則適用刪除尾隨斜線在我的網站根目錄的所有頁面無法正常工作:去除尾隨在URL斜槓子目錄

RewriteRule ^(.+)/$ /$1 [L,R=301] 

然而,放置在一個子文件夾時,它不起作用。我也試過:

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

無濟於事。發生的事情是,它重定向

http://example.com/testfolder/testpage/

http://example.com/testpage

我缺少什麼?提前致謝!

+0

對於直接比較,最好只是每次更改一件事情。除了刪除'^'之外,我發現你改了'。+'爲'。*'*。不一定是世界問題的根源,但如果一次只有一個變量,它會幫助你保持安寧,延長時間。 – 2012-03-13 19:05:56

+0

@Chris謝謝,我很欣賞提示。實際上我從其他SO帖子中找到了這兩行。我是編程新手,仍然不懂正則表達式。幾個月前我剛剛拿起了PHP,並且隨着我的進行而學習。我想我應該花時間學習正則表達式,因爲我聽說他們可以非常強大,並且他們似乎在任何地方都被使用。 – 2012-03-13 23:33:03

+0

當然(歡迎來到Stack Overflow!)。你能解釋「當放在一個子文件夾中」是什麼意思嗎?你的意思是你在子目錄中創建了一個.htaccess文件嗎?或者只是想讓一個'RewriteRule'在你的網站的所有[sub]目錄中工作? – 2012-03-14 00:38:06

回答

1

您是否嘗試過忽略替換中的前導斜槓?

RewriteRule ^(.+)/$ $1 [L,R=301] 

它只是從你有什麼扔石頭。目錄重寫的上下文(「in」/ testfolder)可能是問題的根源。

+0

我想自動刪除它只是爲了保持我的網站一致。目前我只有一個子文件夾,但可能會改變(這是我的第一個網站)。任何想法如何我可以修改上述不從URL剝離子文件夾? – 2012-03-13 23:43:58

+0

@JackT - 我已更新以反映最近的一次腦波,它可能只是幫助。你還應該調查@ Kaz的回答,看看在mod_rewrite完成它的工作之後,'mod_dir'是否可以隨請求(在重新添加結尾的斜槓)處理。 – 2012-03-14 00:48:47

+0

感謝您保持在此!我最終花時間弄清楚正則表達式正在做什麼,並修改它以適應其他文件夾中的需求。那個很簡單,但是複雜的正則表達式可以得到多麼驚人。我有一種感覺,這不是一蹴而就的事情。總而言之,我已經積極編程了大約一年,我喜歡當一切都終於正常工作!我似乎在騎自行車或在晚上做夢之間做我最好的編程,當我的潛意識可以去上班的時候。無論如何,再次感謝您的幫助! – 2012-03-14 02:24:34

0

你也許可以在變量中定義這個,如果沒有別的辦法來做你需要的,確保你的php.ini中的Rewrite mods被啓用。

0

尾部斜線修正由mod_dir完成。每個目錄中的重寫都會重新注入到URL處理鏈中,並再次進行修復。

該行爲是可配置的。例如。

<Directory /path/to/wherever> 
DirectorySlash Off 
... 
</Directory> 

此上下文不僅Directory:它是服務器配置,虛擬主機,目錄,.htaccess。