2012-10-06 78 views
0

永久刪除「文件夾」雖然我已經通過其他具有相同主題的條目工作過,但我無法找到針對特定問題的解決方案。htaccess:用301

現在我的URL結構就像
www.abc.com/in/something/bla

我改變了一些設置和刪除/中/,現在的URL結構是
www.abc。 com/something/bla

我想永久重定向到新結構。

我發現@stackoverflow和web上的解決方案都不適用於我,因此我粘貼(部分)我的htaccess代碼。除了刪除/ in /之外,它完美地工作。
在此先感謝您幫助我!

<IfModule mod_rewrite.c> 

# Enable Rewrite Engine 
# ------------------------------ 
RewriteEngine On 

RewriteBase/

# Redirect index.php Requests 
# ------------------------------ 
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] 
RewriteCond %{THE_REQUEST} !/system/.* 
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L] 

# Standard ExpressionEngine Rewrite 
# ------------------------------ 
RewriteCond $1 !\.(css|js|gif|jpe?g|png) [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 
</IfModule> 

# remove trailing slash 
# 05.10.2012 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^(.+)/$ 
RewriteRule ^(.+)/$ /$1 [R=301,L] 

回答

1

啓用mod_alias:

Redirect 301 /in//

使用mod_rewrite:

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

你會希望把那些接近榜首,僅根據您的RewriteBase

+0

謝謝,第二種解決方案的工作原理!你能簡單地解釋一下在這種情況下mod_alias和mod_rewrite之間的區別嗎?我的意思是:他們中的一個比另一個「更好」? – BNetz

+0

@BNetz One不比另一個更好,它們只是2個不同的模塊,它們碰巧有一些重疊的功能。 Mod_alias用於將URI路徑映射到文件路徑以及重定向。 Mod_rewrite以某種編程/有條件的方式更改URI路徑,並且還具有重定向能力。在你的情況下,mod_rewrite解決方案可能效果更好,因爲當你有別名和重寫時,它們可能會相互干擾。 –

+0

感謝您的明確解釋和您的幫助! – BNetz

0

試試這個:

RewriteCond %{REQUEST_URI} ^/in/.* 
RewriteRule ^/in(/?.*)$ http://${HTTP_HOST}$1 [P,L] 
+0

謝謝,Maksym,但這對我不起作用。/in /被刪除,但CMS引發404錯誤。很可能這是我的CMS的特別之處。不管怎麼說,還是要謝謝你! – BNetz