我在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>
<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
答案 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]