URL根据请求的URL中的尾部斜杠重写

时间:2014-06-19 07:30:49

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

我正在一个动态的php网站上工作,该网站提供来自数据库的内容。目前,我有四个PHP文件 - index.phpa.phpb.PHPc.php。这些服务来自数据库,与请求的URL相同。例如。

  1. 如果请求的网址example.com然后index.php提供结果。

  2. 如果请求的网址为example.com/xyz.html,则a.php首先从网址中提取xyz,然后提供xyz的结果。 [重写example.com/a.phpexample.com/xyz.html]

  3. 如果请求的网址为example.com/x/y.html,则b.php首先从请求的网址中提取xy,然后提供y页面的结果[重写example.com/a.php/b.phpexample.com/x/y.html]。

  4. 如果请求的网址是example.com/x/y/z.html,则c.php首先从网址中提取xyz,然后将结果提供给{ {1}}页面(将z重写为example.com/a.php/b.php/c.php)。

  5. 简而言之,如果请求的网址是 -

    example.com/x/y/z.htmlexample.com - 结果将由example.com/

    提供

    index.php - 然后结果将由example.com/anything.html

    提供

    a.php - 然后结果将由example.com/anything/anything.html

    提供

    b.php - 然后结果将由example.com/anything/anything/anything.html

    解析

    那么我如何使用URL重写来实现这样的功能呢?请回复c.php代码以获取此类功能。

1 个答案:

答案 0 :(得分:0)

将此代码放入DOCUMENT_ROOT/.htaccess文件中:

DirectoryIndex index.php

RewriteEngine On

RewriteRule ^(?!(a|b|c)\.php$)[^/.]+\.php$ /a.php [L,NC]

RewriteRule ^[^/]+/[^/.]+\.php$ /b.php [L,NC]

RewriteRule ^[^/]+/[^/]+/[^/.]+\.php$ /c.php [L,NC]