htaccess:使用301永久删除“文件夹”

时间:2012-10-06 09:17:05

标签: .htaccess url-rewriting

虽然我已经处理了具有相同主题的其他条目,但我无法找到针对我的特定问题的解决方案。

现在我的网址结构就像是 www.abc.com/in/something/bla

我更改了一些设置并删除了/ in /,现在URL结构是www.abc.com/something/bla

我想永久地重定向到新结构。

我发现@stackoverflow和网络中的解决方案都没有为我工作,因此我将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]

2 个答案:

答案 0 :(得分:1)

使用mod_alias:

Redirect 301 /in/ /

使用mod_rewrite:

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

您需要将它们放在靠近RewriteBase

的顶部

答案 1 :(得分:0)

试试这个:

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