将php文件重写为文件夹,而不是使用名为/ about的文件夹

时间:2014-05-07 23:10:03

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

我的网址现在是:

localhost/about/index.php

想要的结果: localhost/about.php但我希望它显示为localhost/about/,而不必将其放入about文件夹。

我对如何使用.htaccess文件执行此操作缺乏经验。

我在网上找到了这个想法,但是我没有使用数据库:

示例3:该网站具有难以处理的URL。如何清理它 当URL冗长而复杂时,就会出现这种情况。

以下面的网址为例:

http://example.com/results.php?products=produce&type=fruit&species=apple

与URL在提供正确内容方面一样有效,对消费者而言并不是很难忘。 URL重写将允许您将URL转换为更简单和更清晰的内容:

http://example.com/produce/fruit/apple

为了实现这一目标,我们需要.htaccess文件中的以下行(您可以在.htaccess文件中添加所需数量的部分):

RewriteEngine on
RewriteRule ^(meat|produce|dairy)/([^/.]+)/([^/.]+)$ results.php?products=$1&type=$2&species=$3

现在解释一下:

首先^(caret)启动表达式。

(meat|produce|dairy):如果我们想限制可以输入的选项,我们可以指定我们将接受的唯一值:在这种情况下,各种杂货。如果输入了除这三个关键字中的一个之外的任何内容,则不会进行URL重写。

([^/.]+)表示除了插入符之后的字符之外,还可以在正斜杠之间写入任何内容,在本例中为正斜杠或句点。

results.php?products=$1&type=$2&species=$3:将提取括号中的每个值,然后将其应用于表达式替换部分中的较长URL。 $1表示第一个参与者,$2,第二个,$3,第三个。

1 个答案:

答案 0 :(得分:1)

要从URL中删除.php,您可以使用此...

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

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

只需将其保存为应用程序根目录中的文件名.htaccess即可。

这样您就可以使用localhost/about以及localhost/about.php两者都有效。