php - 如何以专业的方式删除 .php 扩展名

标签 php .htaccess url php-extension

我已经创建了我的第一个 Php 解决方案,但无法从 URL 中删除 .php 扩展名。它在根文件夹中有效但在子文件夹中无效?

例如 www.domain.com/index.phpwww.domain.com/index (或 www.domain.com/)

然后它变得棘手。

例如。 www.domain.com/en/europe/bikes/racer-bike.phpwww.domain.com/en/bikes/racer-bike 没有区别在 www.domain.com/en/bikes/和 index.php

我的 .htaccess 文件如下所示:

Options -MultiViews
RewriteEngine on
RewriteBase /

# Remove .php-extension from url
RewriteCond %{REQUEST_URI} ^/(.*).php$
RewriteRule ^(.*)$ %1 [L,QSA]

# Add trailing slash to url
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
RewriteRule ^(.*)$ $1/ [R=301,L]

# SSL
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301]
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R=301,QSA]

最佳答案

我试了一下,效果不错:

我的目录结构

/
index.php
/sub
    file.php

我的 htaccess 是这样的:

RewriteEngine On
RewriteBase /

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ([A-Za-z]+)/(.*)$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%1 -d
RewriteRule ^([A-Za-z]+)/(.*)$ $1/$2.php [NC,L,QSA]

尝试一下

关于php - 如何以专业的方式删除 .php 扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36217269/

相关文章:

php - 在 OSX Mountain Lion 上为 PHP 安装 mcrypt 扩展

apache - 使用 .htaccess 重定向站点但排除一个文件夹

javascript - 检查 ajax 函数中是否存在动态 url

url - 通过 URL 向多个联系人发送 WhatsApp 消息

javascript - 全屏 vimeo 视频播放后如何重定向 URL?

PHP 根据满足条件更改 MySQL 顺序

php - 将 API 调用从 PHP 和 cURL 转换为 ColdFusion cfhttp

php - 将 PHP 数组传递给 JavaScript 函数

apache - .htaccess 重定向/重写问题

wordpress - 混合内容警告,但源代码中没有内容