【问题标题】:.htaccess Remove file extension, force trailing slash and allow folder with same name as file.htaccess 删除文件扩展名,强制尾部斜杠并允许与文件同名的文件夹
【发布时间】:2016-04-26 19:52:36
【问题描述】:

正如标题所说,我正在尝试从 URL 中删除所有 php 文件扩展名,并在 url 中添加一个尾部斜杠。

http://website.com/link.php

应该是

http://website.com/link/

另外,如果有同名文件夹(/link),文件(link.php)应该优先显示。

我目前的代码如下:

RewriteEngine On
# Manually re-route portfolio/ requests to portfolio
RewriteCond %{REQUEST_FILENAME} marknadsnytt/$
RewriteRule ^(.*)/$ $1 

# Hide extension
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

有什么想法吗?

【问题讨论】:

    标签: php .htaccess


    【解决方案1】:

    您需要一个单独的重定向规则来删除 .php 并添加尾部斜杠:

    RewriteEngine On
    
    RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
    RewriteRule ^ /%1/ [R=302,L]
    
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.*?)/?$ $1.php [L]
    

    【讨论】:

    • 谢谢,但没有解决文件与文件夹的问题。如果有一个与文件同名的文件名(不带扩展名),我想打开文件,而不是文件夹。因此,/link 应该转到 /link.php,但没有 php 扩展名。如果我们转到/link/file,我们应该打开文件夹等中的文件。
    • 假设link.php 存在,当您访问/link 时,这段代码会发生什么?
    • 在您的 .htaccess 顶部添加 Options +FollowSymLinks +Indexes 并重新测试
    • 不,那种评论没有帮助,总是提供错误的细节
    • RewriteCond %{DOCUMENT_ROOT}/$1.php -f ? (而不是RewriteCond %{REQUEST_FILENAME}.php -f
    猜你喜欢
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 2021-07-04
    • 2018-02-18
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多