我正在一个项目中,我决定从我的应用程序的URL中删除.php扩展名。我成功使用下面给出的htaccess代码。但是问题是,如果手动键入或从历史记录中加载,页面仍将使用.php扩展名加载。
我当前的.htaccess代码。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
我希望它始终加载www.example.com/dashboard
之外的www.example.com/dashboard.php
,即使手动键入dashboard.php。
更新的.htaccess代码
RewriteEngine On
RewriteBase /dateapp/
RewriteRule ^([^\.]+).php$ $1 [R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,END]
答案 0 :(得分:1)
您可以将重定向添加为第一条规则。
RewriteEngine On
RewriteRule ^([^\.]+).php$ /$1 [R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,END]
您必须使用END
标志而不是L
,否则重定向将以无限循环结束。如果.htaccess位于您的webroot文件夹中,则将起作用。
如果您在“文件夹”子文件夹中有.htaccess,则必须添加RewriteBase
RewriteEngine On
RewriteBase /folder/
RewriteRule ^([^\.]+).php$ $1 [R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,END]
答案 1 :(得分:0)
您可以在dateapp/.htaccess
中使用此代码:
RewriteEngine On
RewriteBase /dateapp/
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ %1 [R=301,NE,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]