我有这样的网址:
www.example.com/的的index.php / 5类 /子类别/页
我想改写为:
www.example.com/的类别 /子类别/页
即。我想删除“index.php /”并删除“-5”,但保留其余部分。
我在Apache方面处于领先地位。我通常只是写简单的PHP代码。
我尝试过这个并没有用:
RewriteRule ^index.php/category-1/(.*)$ /category/($1) [NC]
由于
另外,如果我们能够将其作为永久重定向,那就太好了。
答案 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]