Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅删除子目录下页面的.php扩展名?_Php_Apache_Url Rewriting - Fatal编程技术网

如何仅删除子目录下页面的.php扩展名?

如何仅删除子目录下页面的.php扩展名?,php,apache,url-rewriting,Php,Apache,Url Rewriting,我正在尝试删除网站子类别文件夹下页面的.php扩展名 当前:example.com/blog/my first blog.php 我想要的:example.com/blog/my first blog/ 我在.htaccess(放在根目录下)中尝试了以下规则,但它仍然显示.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/blog/$1.php -f RewriteRule ^(.+?)/?$ /blog/$

我正在尝试删除网站子类别文件夹下页面的.php扩展名

当前:example.com/blog/my first blog.php

我想要的:example.com/blog/my first blog/

我在.htaccess(放在根目录下)中尝试了以下规则,但它仍然显示.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/blog/$1.php -f
RewriteRule ^(.+?)/?$ /blog/$1.php [L]
我想出来了 我只需要在“/guide/”目录下创建.htaccess文件。使用下面的规则注意
RewriteBase/guide/
,以确保它只删除“/blog/”文件夹下的.php


实现所需结果的最佳方法是构建路由。 首先,您需要将所有流量重写到index.php:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /index.php [L,QSA]
然后,您需要编写将解析URL路径的路由器。 路由器最简单的例子是:

$url = urldecode(preg_replace('/\\?(.*)$/', '', $_SERVER['REQUEST_URI']));

if ($url == '/contact/about') {
    include 'contact.php';
}
您可以检查它在
PHP
框架中如何工作,以获得更好的解决方案,或者使用其中一种解决方案。

试试这个--


谢谢你的建议,事实上,是的,我同意你的意见,当使用laravel或php框架时,这会变得不那么痛苦。但这是一个老的定制php网站,我们不想弄乱所有的URL以防止损害SEO。所以我必须通过htaccessSo来完成,然后你仍然可以构建一个路由器XD。不是最好的,因为这个网站的架构,但无论如何。这有助于删除这些扩展。
$url = urldecode(preg_replace('/\\?(.*)$/', '', $_SERVER['REQUEST_URI']));

if ($url == '/contact/about') {
    include 'contact.php';
}
RewriteEngine on
RewriteBase /
RewriteCond %{http://www.example.in/} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.php $ http://www.example.in/$1 [R=301,L]