有很多关于“删除PHP扩展”的帖子。我试过一堆。有些工作......有些不做......但没有人能做我需要的工作。 [注意:这被标记为“重复”......但没有人可以在这里为我提供解决方案的链接]
下面的代码允许我的用户转到某个页面,并在没有php扩展名的情况下查看它。但是,我需要将用户从带有扩展名的URL重定向到无扩展名的URL ...现在,转到“page.php”可以让他们将URL视为www.website.com/page.php (他们需要访问www.website.com/page)。
现在:
GO TO: www.website.com/page
--- URL IS: www.website.com/page
GO TO: www.website.com/page.php
--- URL IS: www.website.com/page.php
--- NEEDS TO BE : www.website.com/page
代码如下:
RewriteEngine on
# remove php ext
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
# http to https
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# Add www to any URLs that do not have them:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
有人说这是一个重复的帖子,解决方案是:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
那不起作用。它完全符合我的代码所做的。
找到以下工作......
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [NC,L]
答案 0 :(得分:0)
但是,我需要将用户从带有扩展名的网址重定向到无扩展名网址
尝试一下:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
(信用:How to remove .php, .html, .htm extensions with .htaccess)
如果你没有很多页面,另一种方法是PHP方式,只需要一个简单的header
重定向......
换句话说,在页面顶部,只需执行类似 -
的操作<?php
if(strpos(basename($_SERVER['PHP_SELF']), ".php") !== FALSE) {
$fileName = explode(basename($_SERVER['PHP_SELF']));
header('Location: '.$fileName[0]);
die();
}
...
//rest of your page's code
...
?>
情景:
用户转到:http://www.website.com/page
if
阻止未执行用户转到:http://www.website.com/page.php
if
阻止,将用户重定向到http://www.website.com/page
。如果您有一个包含在所有网页中的包含文件(例如header.php
),那么在其中包含if
块也会有效...