Mod_Rewrite将`/ about /`重定向到`page.php?page = about`

时间:2012-07-03 18:38:50

标签: php mod-rewrite

我正在使用Mod_Rewrite创建一个网站。目前,所有网址都被重定向到最后的.php页面名称。

/about//photos/应重定向到page.php?page=aboutpage.php?page=photos

有办法做到这一点吗?

当前代码:

RewriteEngine on RewriteBase /new/ 
RewriteRule ^about/$ /new/page.php?page=about [L] 
RewriteRule ^([^/]*)/$ /new/$1.php [L] 
RewriteRule ^blog/([^/]*)/$ /new/blog.php?page=$1 [L] 
RewriteRule ^blog/post/([^/]*)/$ /post.php?post=$1 [L] 
RewriteRule ^blog/category/([^/]*)/$ /category.php?category=$1 [L]

3 个答案:

答案 0 :(得分:1)

这是你想要的吗?

RewriteRule ^blog(/?)$ /new/blog.php [L]
RewriteRule ^blog/([^/]*)(/?)$ /new/blog.php?page=$1 [L]
RewriteRule ^blog/post/([^/]*)(/?)$ /post.php?post=$1 [L]
RewriteRule ^blog/category/([^/]*)(/?)$ /category.php?category=$1 [L]
RewriteRule ^(?!blog)([^/]*)(/?)$ page.php?page=$1 [L]

答案 1 :(得分:0)

这很简单:

RewriteRule ^about/$ page.php?page=about 
RewriteRule ^photos/$ page.php?page=photos 

答案 2 :(得分:0)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)/$ /page.php?page=$1 [L,QSA]
</IfModule>

[L]指令的意思是“最后”,因此如果匹配此指令,它将不再继续应用任何进一步的重写规则。

[QSA]指令允许您将查询参数附加到重写的地址。

如果博客重写,您需要做的就是最后一条规则。

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteRule ^(.*)/$ /new/$1.php 
    RewriteRule ^blog/(.*)/$ /new/blog.php?page=$1 [L] 
    RewriteRule ^blog/post/(.*)/$ /post.php?post=$1 [L] 
    RewriteRule ^blog/category/(.*)/$ /category.php?category=$1 [L]

    RewriteRule ^(.*)/$ /page.php?page=$1 [L,QSA]
</IfModule>