php网站有多个页面和不同的mod_rewrite清除相同脚本的URL

时间:2014-05-23 13:26:24

标签: php apache mod-rewrite redirect

您好,对不起,如果已经回答了这个问题,我已经搜索了好几天,并且没有找到答案或者知道这是不是一个好主意。

我正在使用可以返回不同页面的PHP脚本创建一个站点。我现在也使用mod_rewrite来创建干净的URL。例如,我有一个脚本 myscript.php ,其中会返回 page1 page2 page3 取决于一些参数。这很有效。

网址总是 mysite.com/myscript.php ,但输出会是3个不同的网页。

然后我应用mod_rewrite,网址现在是 mysite.com/publicname 。很好,但现在的问题是我希望三个不同的页面显示为 mysite.com/publicname1 mysite.com/publicname2 mysite.com/publicname3

既然这需要推动?浏览器的不同URL我必须使用重定向到此名称的另一个脚本?这样做有更好的方法或最佳实践吗?这有什么浏览器和设备支持问题?我应该以不同的方式设计我的网站吗?我不进行任何重定向,或者PHP位置:重定向是否得到良好支持并且可以建立网站?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

听起来你正试图用一个前置控制器来实现路由。这在MVC设计模式中最常见。

有许多MVC框架可以开箱即用 - CodeIgniter或Yii将是一个良好的开端。

如果你想自己推出,请查找有关实现前端控制器模式的文章,例如: http://www.sitepoint.com/front-controller-pattern-1/

答案 1 :(得分:0)

浏览器与URL重写无关,他们看不到它,也不关心你服务器中发生了什么,他们都知道(并且应该知道),当他们请求URL时(带参数或没有),他们得到了回复(html,JS,CSS,图像......等)。

所以要么你的3个网址(mysite.com/publicname1,mysite.com/publicname2,mysite.com/publicname3)指向同一个文件,要么不同的文件是你的设计,那就是apache http mod_rewrite正在关注这一点。

如果你想让3个网址重定向到同一个文件,你可以这样做:

RewriteRule ^publicname1$ myscript.php?page=1 [L]
RewriteRule ^publicname2$ myscript.php?page=2 [L]
RewriteRule ^publicname3$ myscript.php?page=3 [L]

或更简单:

RewriteRule ^publicname([0-9]+)$ myscript.php?page=$1 [L]

但这真的取决于你想要做什么