我有一个用PHP编写并在Apache上运行的小型CMS系统。此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插件?
有人可以解释最简单的方法吗?向我解释,好像我还是个孩子: - )
提前致谢!
答案 0 :(得分:2)
很好地放置像
这样的东西RewriteEngine on
RewriteRule ^about$ ./display.php?PageID=44
RewriteRule ^products$ ./display.php?PageID=34
你.htaccess
中的文件不应该是我认为的大问题......
答案 1 :(得分:1)
URL Rewriting for Beginners是我最喜欢的介绍文章,它应该涵盖您正在寻找的内容。实际上,您编写.htaccess
文件的第一个实际示例几乎与您想要的相同。
答案 2 :(得分:0)
另一种方法是通过动态php文件过滤,页面映射或路由策略,如drupal code igniter .... 你的网址就像 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] ---------------- MY-URL.php --------- <?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
}
?>