【问题标题】:Removing .php extensions from files in htdocs从 htdocs 中的文件中删除 .php 扩展名
【发布时间】:2017-03-22 18:13:21
【问题描述】:
我的项目在我的htdocs 文件夹中,我的主文件是index.php。当文件在浏览器中打开时,我曾多次尝试删除.php 扩展名,使用带有以下行的.htaccess 文件没有运气:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L]
扩展仍然存在。是不是因为我浏览器中的链接是
file:///C:/wamp64/bin/apache/apache2.4.23/htdocs/Cipcpr/index.php
而不是
localhost/...
【问题讨论】:
标签:
php
apache
.htaccess
mod-rewrite
【解决方案1】:
如果您的项目不需要动态删除扩展,您可以为每个文件手动设置RewriteRules。这是您的 index.php 的代码
RewriteEngine On
RewriteRule ^index/?$ index.php [NC,L]
当您现在键入 /index 时,它将引用 /index.php 文件。
要添加其他文件(比如 login.php),您只需复制最后一个 RewriteRule 并重写索引。
RewriteRule ^login/?$ login.php [NC,L]
【解决方案2】:
只需将 .htaccess 文件添加到您网站的根文件夹(例如,/home/domains/domain.com/htdocs/),其中包含以下内容:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
【解决方案3】:
你可以使用:
Options -MultiViews
RewriteEngine on
# remove php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
# rewrite with php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+)/?$ $1.php [L]