【问题标题】:Apache friendly urlsApache 友好的网址
【发布时间】:2011-02-15 16:58:23
【问题描述】:

我有一个用 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 插件?

有人能解释一下最简单的方法吗?像我小时候一样给我解释一下:-)

提前致谢!

【问题讨论】:

标签: apache .htaccess url-rewriting


【解决方案1】:

不错的东西

RewriteEngine on

RewriteRule ^about$  ./display.php?PageID=44
RewriteRule ^products$ ./display.php?PageID=34

我认为在您的.htaccess-文件中应该没什么大不了的......

【讨论】:

  • 我明白了,这看起来很简单。会试一试。谢谢:-)
【解决方案2】:

URL Rewriting for Beginners 是我最喜欢的介绍文章,它应该涵盖您正在寻找的内容。事实上,您编写.htaccess 文件的第一个实际示例几乎与您想要的相同。

【讨论】:

  • 谢谢,我去看看那篇文章!
【解决方案3】:

另一种方法是通过动态 php 文件进行过滤,该文件具有页面映射或路由策略(如 drupal code igniter ... 等框架)。 你的网址会像 我的页面/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  
}


?>

【讨论】:

    猜你喜欢
    • 2012-11-13
    • 2012-10-15
    • 2016-03-11
    • 1970-01-01
    • 2010-09-11
    • 2011-07-23
    • 2011-04-06
    • 2014-01-14
    • 2017-05-14
    相关资源
    最近更新 更多