如何从root子文件夹重写url

时间:2012-08-22 22:45:36

标签: .htaccess seo

我在Google es中有更多链接:

http://www.mysite.com/blog/23-08-2012/example.html
http://www.mysite.com/blog/more/
http://www.mysite.com/blog/test/example.html

如何通过删除htaccess es中的“blog”一词来重写网址:

http://www.mysite.com/23-08-2012/example.html
http://www.mysite.com/more/
http://www.mysite.com/test/example.html

修改

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>

RE-EDIT解决方案

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>
  RedirectMatch 301 ^/blog/(.*)$ /$1

将这一行放在最后,而不是开始

是很重要的
RedirectMatch 301 ^/blog/(.*)$ /$1

2 个答案:

答案 0 :(得分:1)

阅读Apache's Rewrite Rule文档只需一两分钟即可为您提供答案。以下是您可以做的大纲:

Options +FollowSymLinks
RewriteEngine On
RewriteCond ^blog/
RewriteRule ^blog/(.*)$ http://mysite.com/$1 [R=301,L]

答案 1 :(得分:1)

您只需要mod_alias来执行此操作:

RedirectMatch 301 ^/blog/(.*)$ /$1

您可以在vhost配置或文档根目录中的htaccess文件中使用它。


意外的是你没有mod_alias,它默认加载了很多。但是因为你已经在使用mod_rewrite:

如果这是你所拥有的:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /
   RewriteRule ^index\.php$ - [L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule . /index.php [L]
</IfModule>

然后在RewriteBase上方添加:

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