2012-07-03 42 views
1

我正在用Mod_Rewrite创建一个网站。目前所有的网址都被重定向到.php的页面名称。Mod_Rewrite重定向`/ about /`到`page.php?page = about'

但是/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] 
+0

网址如何重定向?显示你的代码,并告诉我们你试过什么,出了什么问题 – Nanne

+0

这是代码: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] –

+0

下次请在您的问题中添加类似代码。我已经清理了一切,但你可能想在下一次自己做这个...... – Nanne

回答

0

这很简单:

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

谢谢罗恩。我的意思是,它是动态完成的,所以Mod_Rewrite可以告诉它发送的位置。 –

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> 
+0

谢谢,但在/ blog /有一个博客,因此会重定向到/page.php?page=blog,这是无效的。 –

+0

它没有工作。去/约/给我一个404错误。 –

+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] 
+0

产生的,谢谢,但在/ blog /有一个博客,因此会重定向到/page.php?page=blog,这是无效的。 –

+0

我更新了重写。让我知道这是否符合您的需求。 – johnmadrak

+0

/博客/现在不工作,我已经离开了博客重写。 –