我试图在位于我的根目录中的htaccess中完成2件事,并且应该影响我网站中的所有网页。我正在使用Apache 2.4。
1)将非www重写为www(此部分目前正在工作)
2)从网址
中删除.php扩展名对于#2,我找到了两个关于此的线程但是当试图用#1的代码实现它时,它似乎永远不会起作用。
Remove .php extension with .htaccess
How to hide the .html extension with Apache mod_rewrite
这是我的代码,第一部分工作正常,但第二部分似乎没有为我做任何事情" .php"仍显示在所有网址上。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
我也查看了这个帖子并尝试了以下内容,但仍无效。
5 .htaccess Rewrites: Force HTTPS, Remove index.php, Remove .php, Force www, Force Trailing Slash
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.(?!js|css)([^.]*)$ $1\.php
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
任何帮助将不胜感激。提前谢谢。
已更新
这是文件夹结构以及PHP代码所在的位置。大多数php文件都在根文件夹中,但还有两个包含PHP代码的附加文件夹。
/
index.php
file1.php
file2.php
file3.php
file4.php
folder1/file5.php
folder1/file6.php
folder2/file7.php
folder2/file8.php
答案 0 :(得分:1)
您可以使用:
RewriteEngine On
Options -MultiViews
# Redirect to http(s)://www
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# remove php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
# Rewrite to php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+)/?$ /$1.php [L]