我有一个用PHP编写的小型CMS系统,运行在Apache上。此CMS系统使用/生成的URL的格式为:
/display.php?PageID=xxx,其中xxx只是某个整数。如你所见,这些URL对用户和搜索引擎都不是很友好。
我相信,使用mod_rewrite (或类似的东西)和.htaccess文件,我应该能够配置Apache以进行URL重写。我以前搜索过关于这方面的信息,但我没有找到任何简单的方法来做这件事,它总是涉及到我不太熟悉的正则表达式。
由于这个网站非常简单和小,只有5-10个不同的页面,我真的希望能够硬编码的配置,没有任何特殊的规则或正则表达式。
我只想将一个友好的URL映射到一个实际的URL,可能如下所示:
/about = /display.php?PageID=44
/products = /display.php?PageID=34等。
有没有可能以这样的基本方式配置mod_rewrite插件?
谁能解释一下做这件事最简单的方法?向我解释,就像我是个孩子一样:-)
提前感谢!
发布于 2010-05-05 07:27:16
嗯,像这样的东西
RewriteEngine on
RewriteRule ^about$ ./display.php?PageID=44
RewriteRule ^products$ ./display.php?PageID=34在你的.htaccess中-file应该不是什么大问题,我认为...
发布于 2010-05-05 07:21:59
URL Rewriting for Beginners是我最喜欢的介绍这篇文章的文章,它应该涵盖你正在寻找的东西。实际上,您编写.htaccess文件的第一个实际示例几乎与您想要的完全相同。
发布于 2015-03-27 22:17:00
另一种方法是通过动态php文件进行过滤,该文件具有页面映射或路由策略,如drupal代码触发器等框架。您的URL将类似于my-pages/about.html -> display.php?PageID=44 my-pages/products.html -> display.php?PageID=34
诸若此类
下面是对.htaccess文件的建议,并使用此策略过滤操作
- .htaccess文件-*重写引擎打开
RewriteRule ^my-pages/(.).html$ MY-URL.php QSA,L,E
<?php
$PREFIX = 'my-pages/'; //--- not used
$mapping=array(
'about' => 44,
'products' => 34
);
$pathinfo= pathinfo( $_SERVER['REQUEST_URI'] );
/* $pathinfo['dirname'] -> my-pages
$pathinfo['basename'] -> ???.html
$pathinfo['extension']-> .html
*/
$page = substr( $pathinfo['basename'] ,0,-5);
if( isset( $mapping[$page] ){
// ---- redirect or include
YUOR CODE HERE
}
else {
//--- error 404
YUOR CODE HERE
}
?>https://stackoverflow.com/questions/2769548
复制相似问题