mod_rewrite规则删除“.php”扩展名并重写查询字符串

时间:2014-01-26 14:13:32

标签: php apache .htaccess mod-rewrite url-rewriting

你好我是Mod_Rewrite的新手,想要第一次使用它,我有一个简单的请求,如何从我的页面中删除.php扩展名并重写查询字符串。

http://localhost/myproject/aboutus.php?page=info
http://localhost/myproject/products.php?page=first-product

我有这样的多个页面,我需要做的是

http://localhost/myproject/aboutus/info
http://localhost/myproject/products/first-product

同样关于aboutus.php?page = moreinfo和product.php?page = second-product等等。

我需要的只是一个简单的规则,从页面中删除.php扩展名并重写所有页面的获取页面查询字符串。 如果有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

在你的htaccess(应该在你的myproject目录中)中尝试这个:

Options +FollowSymLinks -MultiViews

RewriteEngine on
RewriteBase /myproject/

RewriteCond %{ENV:REDIRECT_END} !^1$
RewriteRule ^([A-Za-z-_]+)\.php$ $1/%{QUERY_STRING} [R=301,L]

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . - [L]

RewriteRule ^([A-Za-z-_]+)/([A-Za-z-_]+)/?$ $1.php?page=$2 [E=END:1,L]
RewriteRule ^([A-Za-z-_]+)/?$ $1.php [E=END:1,L]
RewriteRule ^$ index.php [E=END:1,L]

匹配该规则的myproject目录中的每个网址(例如something/other-thing)都会被重写为something.php?page=other-thing