gpt4 book ai didi

php - 试图删除 .php 文件扩展名

转载 作者:行者123 更新时间:2023-12-04 18:28:31 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Reference: mod_rewrite, URL rewriting and "pretty links" explained

(5 个回答)


7年前关闭。




我刚刚在我的 ubuntu apache 服务器上安装了 mod_rewrite 并启用了 .htaccess。
但是当我编辑 .htaccess 以从文件中删除 .php 文件扩展名时,url不会改变。

现在我的 .htaccess 文件看起来像这样:

Options -Indexes

ErrorDocument 400 /blabla.php
ErrorDocument 401 /blabla.php
ErrorDocument 403 /blabla.php
ErrorDocument 404 /blabla.php
ErrorDocument 500 /blabla.php

不多,只是确保 ppl 无法查看我的文件树并添加了一些自定义错误页面。

但是,如果我在我的网站上输入一个页面,例如 href="page.php"一切正常,但如果我从 url 栏中删除“.php”并将页面重新加载为“www.mysite.com/page”而没有 . php 还是可以的。而且我还没有在 .htaccess 文件中做任何事情,对吗?

如果我现在将以下行添加到 .htaccess 中:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

然后访问 href="page.php"网址仍显示为 "www.mysite.com/page.php"而不是 "www.mysite.com/page"

我是否还需要从 更改 href href="page.php" href="页" ?为了使 .php 扩展名消失。 - 因为即使我一开始没有编辑 .htaccess 文件,它也可以工作。

当我编辑 .htaccess 文件时,我总是确保重新启动 apache。

在此先感谢,

最佳答案

你在这里问了很多问题。让我回答第一个:
www.mysite.com/page由于Options MultiViews,无需任何重写规则即可工作.选项 MultiViewsApache's content negotiation module 使用在 mod_rewrite 之前运行并使 Apache 服务器匹配文件的扩展名。所以/file可以在 URL 中,但它会提供 /file.php .

如果将此行放在根 .htaccess 的顶部:

Options -MultiViews

然后 www.mysite.com/page将发出404。

还可以自动删除 .php从您的 URL 中使用此代码在您的根 .htaccess 中:
Options -MultiViews
RewriteEngine On

# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

# To internally forward /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]

关于php - 试图删除 .php 文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24995634/

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