我正在一个动态的php网站上工作,该网站提供来自数据库的内容。目前,我有四个PHP文件 - index.php
,a.php
,b.PHP
,c.php
。这些服务来自数据库,与请求的URL相同。例如。
如果请求的网址example.com
然后index.php
提供结果。
如果请求的网址为example.com/xyz.html
,则a.php
首先从网址中提取xyz
,然后提供xyz
的结果。 [重写example.com/a.php
至example.com/xyz.html
]
如果请求的网址为example.com/x/y.html
,则b.php
首先从请求的网址中提取x
和y
,然后提供y
页面的结果[重写example.com/a.php/b.php
至example.com/x/y.html
]。
如果请求的网址是example.com/x/y/z.html
,则c.php
首先从网址中提取x
,y
,z
,然后将结果提供给{ {1}}页面(将z
重写为example.com/a.php/b.php/c.php
)。
简而言之,如果请求的网址是 -
example.com/x/y/z.html
或example.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
代码以获取此类功能。
答案 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]