我正在尝试仅删除网站的子类别文件夹下的页面的.php扩展名。
currently: example.com/blog/my-first-blog.php
what i want: example.com/blog/my-first-blog/
我尝试在.htaccess中放置以下规则(放置在root中),但仍显示.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/blog/$1.php -f
RewriteRule ^(.+?)/?$ /blog/$1.php [L]
答案 0 :(得分:1)
获得所需结果的最佳方法是构建路由。 首先,您需要将所有流量重写为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
框架中如何工作,以获得更好的解决方案,或者使用其中一种。
答案 1 :(得分:1)
尝试一下-
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]
答案 2 :(得分:0)
我知道了
我只需要在“ / guide /”目录下创建.htaccess文件。并附有以下规则注释RewriteBase /guide/
,以确保其仅删除“ / blog /”文件夹下的.php
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]