1

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

但是/about/and/photos/应该重定向到page.php?page=aboutand page.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]
4

3 回答 3

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]
于 2012-07-03T18:57:16.317 回答
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>
于 2012-07-03T18:55:09.600 回答
0

这很容易:

RewriteRule ^about/$ page.php?page=about 
RewriteRule ^photos/$ page.php?page=photos 
于 2012-07-03T18:41:34.173 回答