2014-01-29 161 views
1

這不像標題可能暗示的那樣直截了當。我會盡力解釋。.htaccess將所有子目錄重定向到根(Kinda)

我目前正在基於改寫的網址的視頻網站上工作。 我目前使用這個規則:!

RewriteEngine敘述上
的RewriteCond%{} REQUEST_FILENAME -f
的RewriteCond %{} REQUEST_FILENAME -d
重寫規則^ index.php文件(*。)? URL = $ 1 [L,QSA]

這是用來讓有好看的url像這樣的用戶訪問視頻:

例如,domain.com/kJbSGe5X而不是domain.com/?v=kJbSGe5Xdomain.com/index.php?v=kJbSGe5X

現在的問題是,無論何時添加尾部斜線,CSS都會中斷。 我試着解決方案,如在CSS的網址前面添加一個斜槓,像這樣:

<link href="/css/bootstrap.css" rel="stylesheet"> 

...但它不工作。

解決方案是否可以將尾部斜線(包括尾部斜線)後的所有urlstrings重寫爲相同的URL,而不使用尾部字符串?就像這樣:

domain.com/kJbSGe5X/domain.com/kJbSGe5X/randomchars這樣: domain.com/kJbSGe5X - 我怎麼會去這樣做呢?

我想這個問題可能有更好的解決方案,但我對此很新穎。 任何幫助表示讚賞。

在此先感謝!

- 編輯 -

我寧願一個解決方案,一切之後尾隨斜線被重定向到相同的URL沒有結尾的斜線+尾隨之後的任何字符串。 (如果網址中沒有內容)

我可能會非常重視css問題 - 像這樣的規則對我的網站設置很有效。

回答

0

你可以嘗試忽略你的重寫規則的CSS目錄:

RewriteCond %{REQUEST_URI} !^/css/ 

這不正是你問什麼,但如果你從你的重寫規則(可能是/ CSS,/ JS排除特定的目錄和等等),那麼你就不必擔心格式化你的漂亮/短觀URL以刪除斜線或其他任何東西之後的任何東西。

+0

我喜歡這個想法。我試圖將它添加到我的.htaccess與現有rules.But我似乎無法得到它的工作。添加尾部斜線時,CSS仍然會斷開。我想我做錯了什麼。你能否更新你的文章並將該規則與我在OP中列出的規則結合起來? :) 我應該mabye補充說我在localhost上做了所有這些 - 如果這與它有任何關係。 –

1

插入此規則您現有的規則之前刪除任何結尾的斜線:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{THE_REQUEST} \s/+([^/]+)/.*?\sHTTP/ [NC] 
RewriteRule^/%1? [R=301,L] 
+0

不錯!是否還有一種方法可以刪除尾部斜線 - 以及斜線後面的任何字符串? –

+0

'斜線後面的任何字符串'我相信你的意思是查詢字符串。爲此,請參閱更新的代碼。 – anubhava

+0

我希望它可以這樣工作,如果可能的話: ** domain.com/akkajd/adadoj **被重寫爲** domain.com/akkajd **。 感謝您的回覆! :) –

0

這是我的完整解決方案。藉助anubhava的一點幫助!從所有URL

刪除斜槓:(?+)

RewriteEngine敘述上

的RewriteCond%{} REQUEST_FILENAME -d

的RewriteCond%{THE_REQUEST} \ S/+ [?\ s]

RewriteRule ^%1? [R = 301,L]

約束 「創建好看」 的網址啄僅工作時,它的8個字符(這是每個shortlink用於視頻的長度):

的RewriteCond% {REQUEST_FILENAME}!-f

的RewriteCond%{REQUEST_FILENAME}!-d

重寫規則^({8})$的index.php?URL = $ 1 [QSA,L]

相關問題