-1

我在 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”一词来重写 url:

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>

重新编辑解决方案

<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
4

2 回答 2

1

只需一两分钟阅读Apache 的 Rewrite Rule文档就会为您提供答案。以下是您可以执行的操作的概述:

Options +FollowSymLinks
RewriteEngine On
RewriteCond ^blog/
RewriteRule ^blog/(.*)$ http://mysite.com/$1 [R=301,L]
于 2012-08-22T23:08:16.777 回答
1

你只需要 mod_alias 来做到这一点:

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

您可以在您的虚拟主机配置或文档根目录中的 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]
于 2012-08-22T23:12:59.813 回答