需要Apache重写规则来更改部分网址

时间:2013-03-19 23:29:04

标签: apache mod-rewrite

我有这样的网址:

www.example.com/的的index.php / 5类 /子类别/页

我想改写为:

www.example.com/的类别 /子类别/页

即。我想删除“index.php /”并删除“-5”,但保留其余部分。

我在Apache方面处于领先地位。我通常只是写简单的PHP代码。

我尝试过这个并没有用:

RewriteRule ^index.php/category-1/(.*)$ /category/($1) [NC]

由于

另外,如果我们能够将其作为永久重定向,那就太好了。

2 个答案:

答案 0 :(得分:1)

请勿在替换部分使用括号:

RewriteRule ^ index.php / category-1 /(.*)$ / category / $ 1 [NC,R = 301]

请参阅:

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions

http://httpd.apache.org/docs/current/rewrite/flags.html

你可以激活调试日志,我总是觉得这很有用,因为RewriteRule很棘手:

RewriteLog "/path-to-log/rewrite.log"
RewriteLogLevel 4

答案 1 :(得分:0)

问题:

  

www.example.com/index.php/category-5/subcategory/page

     

我想改写为:

     

www.example.com/category/subcategory/page


您可以在根目录中的一个.htaccess文件中尝试:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php/([^-]+)-[\d]+/([^/]+)/([^/]+)/? /$1/$2/$3  [R=301,NC,L]

永久重定向:

http://www.example.com/index.php/par1-AnyDigits/par2/par3

http://www.example.com/par1/par2/par3

par1 par2 par3 是动态字符串。

对于内部映射,用[NC,L]

替换[R = 301,NC,L]