0

好的,我能够为我之前的问题找到一个解决方案,但现在我遇到了各种各样的障碍。我的网站计划在许多不同的页面上包含内容,我想知道是否有办法让每个 .php 文件显示 domain.com/filename/ 显示子目录而不是 filename.php

我知道下面会这样 test.php 显示为 domain.com/test/ 但这样做我需要为每个我希望显示为子目录的文件编辑 .htaccess 。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^test/?$ test.php [L,NC]

哦,子目录中没有内容(如果它们甚至作为服务器上的文件夹存在。

4

3 回答 3

1

一些没有 RewriteCond 的递归尝试:

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteRule (.*\.php)$ $1 [L]
RewriteRule (.*) $1.php
于 2012-05-09T08:47:43.510 回答
0

您可以使用此代码隐藏 .php 扩展名:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# To externally redirect /dir/foo.php to /dir/foo/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R,L]

# To internally redirect /dir/foo/ to /dir/foo.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
于 2012-05-09T08:36:14.307 回答
0

我假设您对 PHP 中的面向对象编程有一定的了解。要实现这样的 URL,您需要一个调度模式,最适合您的情况是前端控制器。

下面是一个类控制器的例子:

class ControllerIndex {
    public $urlmap = array(
        'welcome' => 'WelcomePage'
        );
}

使用前端控制器,所有请求都经过全局映射机制,然后委托给处理程序。然后,处理程序将具有类的形式,而不是文件。

前端控制器提供更有意义/漂亮的 URL。你会有类似http://domain.com/welcome/而不是http://domain.com/welcome.php

于 2012-05-09T08:41:21.223 回答