我正在创建一个带有Mod_Rewrite的网站。目前,所有网址都被重定向到页面名称,末尾带有.php
。
但是/about/
和/photos/
应该重定向到page.php?page=about
和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]
这是你想要的吗?
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]
这很简单:
RewriteRule ^about/$ page.php?page=about
RewriteRule ^photos/$ page.php?page=photos
<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>