没有 .php 扩展名的 PHP URL 格式?

问题描述 投票:0回答:3

我需要的只是获取一个字符串作为 URL,而不显示 PHP 文件名。我有文件 contact.php 页面,我试图获取 URL 作为 例如

localhost/contact.php

这就是我现在得到的,我需要访问此页面只需使用

本地主机/联系人

对于每个页面,我应该只能通过他们的名字进行导航。

本地主机/联系人
本地主机/帮助
本地主机/支持

php mod-rewrite url-rewriting
3个回答
23
投票

如果您使用 apache,则需要使用

.htaccess
文件。如果您使用的是 IIS,那么您可以在 IIS 中进行配置。

看看这个

您的

.htaccess
文件需要如下所示:

IndexIgnore * # prevent directory listing

Order deny,allow
Allow from *

# ------------------------------------------
# Rewrite so that php extentions are not shown
RewriteEngine on

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

由于文件限制,您无法简单地在 Windows 中创建

.htaccess
文件,因此请打开文本编辑器(Notepad ++ 或您的编程 IDE)并创建一个名为
.htaccess
的新文件。文件名前面的
.
很重要。

编辑

不要有重复的文件名。 IE

contact.php
contact.js
作为
htaccess
将不知道要提供哪一个服务,哪个(取决于您的 apache)将返回错误页面或仅提供其中之一。

正如 @AedixRhinedale 在下面的评论中指出的:

来自 Apache 的注释:如果您有权访问 httpd 主服务器配置文件,则应该完全避免使用 .htaccess 文件。使用 .htaccess 文件会降低 Apache http 服务器的速度。可以包含在 .htaccess 文件中的任何指令最好在目录块中设置,因为它将具有相同的效果和更好的性能


1
投票

就这么简单..

1) 在目录中创建 .htaccess 文件(如上所述,Windows对此有限制)。

2)只需插入这个..

# Turn mod_rewrite on
RewriteEngine On

##(Optional) Redirects http to https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#### hiding .php extensions below:

# (optional) Ignore logic.php .. any page that is needed as mvc with .php exstensions 
RewriteCond %{THE_REQUEST} ^/logicpath/logic.php [NC]
RewriteCond %{THE_REQUEST} ^/logicpath/funcs.php [NC]
# (optional end ^)

## To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]


# (optional) Does the same for html paths
## To externally redirect /dir/foo.html to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R,L,NC]
## To internally redirect /dir/foo.html to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.php [L]
# (optional end ^)

如前所述,httpd 主服务器配置文件要好得多。我不太确定如何解决主要配置文件,但我知道从小的经验来看它并不完全相同。

如果其他人知道学习如何修改配置文件的好资源,请提及!


0
投票

只需在根文件夹中创建一个目录(wwwroot 或 www 等)

将其命名为“联系人”

将你的php文件放入此文件夹中 将其命名为“index.php”

使用链接作为 https://example.com/contact 或者 https://example.com/contact/?c=somehin

© www.soinside.com 2019 - 2024. All rights reserved.