删除.php扩展(明确写入)为友好的URL
htaccess删除我的网站的文件的.php扩展名。
RewriteEngine on RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)$ $1.php [L,QSA]
现在,如果我去我的网站
www.mysite.com/home
工作正常,它redirect到home.php但url仍然友好。
但是,如果我写这个url:
www.mysite.com/home.php
home.php服务,并且URL不友好。
我怎样才能避免这种行为? 我想如果用户写www.mysite.com/home.php,显示在URL栏中的URL是www.mysite.com/home
你可以像这样从请求中移除.php
RewriteCond %{REQUEST_URI} ^/(.*).php$ RewriteRule ^(.*)$ %1 [L,QSA]
码
RewriteEngine On RewriteBase / # remove enter code here.php; use THE_REQUEST to prevent infinite loops RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP RewriteRule (.*)\.php$ $1 [R=301] # remove index RewriteRule (.*)/index$ $1/ [R=301] # remove slash if not directory RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} /$ RewriteRule (.*)/ $1 [R=301] # add .php to access file, but don't redirect RewriteCond %{REQUEST_FILENAME}.php -f RewriteCond %{REQUEST_URI} !/$ RewriteRule (.*) $1\.php [L]
你也可以把这个代码放到你的.htaccess
文件中:
options +multiviews
这样做是在当前目录中search可用的扩展名(.html,.htm和.php我认为)。 所以,如果你要求/user
它会寻找user.php
。
您的重写将被忽略,因为它会根据您的规则检查现有文件:
RewriteCond %{SCRIPT_FILENAME} !-f
我会build议在php中添加一个URL检查redirect到本身(没有扩展名)。 或者如果有人访问现有的文件,你想显示404错误?