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

将php文件重写到一个文件夹中,而不是使用名为/about的文件夹,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我现在的url是: localhost/about/index.php 通缉结果: localhost/about.php但我希望它显示为localhost/about/,而无需将其放入about文件夹 我对如何使用.htaccess文件执行此操作缺乏经验 我在网上发现了这个想法,但我的想法并没有使用数据库: 示例3:该站点有一个笨拙的URL。如何清理 当URL长且复杂时,可能会出现这种情况 以下面的URL为例: http://example.com/results.php?products=

我现在的url是:

localhost/about/index.php
通缉结果:
localhost/about.php
但我希望它显示为
localhost/about/
,而无需将其放入about文件夹

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

我在网上发现了这个想法,但我的想法并没有使用数据库: 示例3:该站点有一个笨拙的URL。如何清理 当URL长且复杂时,可能会出现这种情况

以下面的URL为例:

http://example.com/results.php?products=produce&type=fruit&species=apple
虽然URL在传递正确内容方面非常有效,但对消费者来说却不是很值得纪念。URL重写将允许您将URL转换为更简单、更清晰的内容:

http://example.com/produce/fruit/apple
为了实现这一点,我们需要在
.htaccess
文件中添加以下行(您可以根据需要在
.htaccess
文件中添加任意多的部分):

现在来解释一下:

首先,
^(插入符号)
启动表达式

(肉类|农产品|乳制品)
:如果我们想限制可以键入的选项,我们可以指定我们将接受的唯一值:在这种情况下,食品种类。如果输入了这三个关键字中除一个之外的任何内容,URL重写将不会发生

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


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

要从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
都是有效的。

谢谢,这会影响localhost吗?如果使用localhost,似乎会出现internet内部错误。我猜如果是live,它会工作吗?你用什么来运行localhost?妈妈?笨蛋?LAMP?目前,我已将.htaccess文件删除到另一个文件夹中。我在访问css文件时遇到了文件夹问题。所以这个解决方案有望奏效。WAMP是否阻止我看到这一点?如果操作正确,您将能够在本地主机上使用它。您必须编辑此文件C:/wamp/bin/apache/apache2.2.22/conf/extra/httpd-default.conf。通过将“AllowOverride None”更改为“AllowOverride All”并重新启动WAMPI,WAMPI找不到该选项,但还是要感谢您。一旦我把网站放到一个实时目录中,我会做一些测试,然后回到这篇文章进行评论。
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

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