我正在寻找一种清理网站网址的方法,例如在网址中有文件名时删除.php或.html。此外,如果可以轻松隐藏GET扩展,那也很好,但.php是主要目标。
从其他文章和SO问题我在网站主目录的.htaccess文件中有这段代码:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
第一部分重定向到https,如果有人用http键入网址。那部分工作正常。第二行应使用不带.php扩展名的文件。例如,https://www.fixitconnect.com/users.php应为https://fixitconnect.com/users
我不知道这种语法是如何工作的所以我只是在复制其他答案。看起来它设置了一些条件(如果当前文件的名称中有.php),那么如果满足这些条件,则应用规则(使用不带.php的url)。但我可能做得不对。
谢谢:)
答案 0 :(得分:2)
以下htaccess修改将允许您访问路径而不会在末尾添加.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
</IfModule>
因此可以访问url https://www.fixitconnect.com/users.php https://www.fixitconnect.com/users。虽然网址https://www.fixitconnect.com/users.php仍然可以直接访问,只要它实际存在
使用下面的代码,你可以重写对index.php的所有请求基本上index.php是将处理所有url请求的php文件。
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.php$
RewriteRule ^(.+)$ /index.php?url=$1 [NC,L]
同时检查此link
答案 1 :(得分:1)
尝试下面的代码:
DirectorySlash Off
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*) /$1.html [L]
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*) /$1.php [L]
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.(html|php)[\s?/] [NC]
RewriteRule ^(.*) /%1%2 [R=302,L]
RewriteCond %{REQUEST_URI} !(/$|\.) [NC]
RewriteRule ^ %{REQUEST_URI}/ [R=302,L]
以上代码将删除html & php
个扩展名,然后优先检查该名称,而不是文件扩展名,然后是文件夹。
因此,如果您的文件和文件夹具有相同的名称,那么当文件没有扩展名时,优先级将是。
注意:如果你有两个同名和不同扩展名的文件,则优先考虑.html
,如果你想成为.php
,请让第五个&amp;第六行是第三和第三第四行。
当它们没有斜线时再次删除目录的最后一行。
如果没问题,请将302
更改为301
以获得永久重定向。