gpt4 book ai didi

php - 删除 .php 和 .html 扩展名并拥有同名的目录?

转载 作者:行者123 更新时间:2023-12-02 03:39:13 25 4
gpt4 key购买 nike

我想在浏览器中删除我的网站页面的 .php 和 .html 扩展名。我在网上找到了这段代码,将其添加到 .htaccess 文件中:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php`

但是,如果有一个名为“home.php”的 php 文件,同时有一个名为“home”的目录,则此方法将不再起作用。我想我可能需要添加类似的内容

Options All -Indexes -MultiViews

但我喜欢这个,但它也不起作用。那么我怎样才能实现这一目标呢?

最佳答案

当请求没有与目录同名的 / 时,您可以给予文件优先级,以及删除 php 和 html 并确定哪一个首先像这样检查:

DirectorySlash Off
RewriteEngine on
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.(php|html)[\s?/] [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*) /$1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*) /$1.html [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*) %{REQUEST_URI}/ [L,R=302]

因此,通过上面的代码,扩展将被删除,然后将首先检查是否有 php 文件与此匹配,然后是 html,最后是否有目录。

因此,对 /home 的请求只会首先检查名为 home 的 php 是否存在,然后检查目录 home 但请求 /home/about 将直接进入about内部主目录。

清除浏览器缓存然后测试,如果可以,将302更改为301以获得永久重定向

关于php - 删除 .php 和 .html 扩展名并拥有同名的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49207823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com