RewriteRule ^([a-zA-Z0-9]+)?$ index.php?page=$1 [L]
我以前的代码重写了ex:domain.com/about到domain.com/index.php?page=about
所以现在,我想添加一个安全措施,以防有人添加.html或.php到底认为它应该在那里,我希望它删除扩展,但仍然遵循我以前的规则。如果文件实际存在,我希望此更改忽略。如果文件存在,则仍需要处理结束。
例如:
如果有人输入about.php或about.html,我希望它删除扩展名,然后处理上面的重写规则。
所以about.php会重写为about然后重写为index.php?page = about
如果可能的话,我希望它实际上将URL更改为domain.com/about。现在,上面的重写离开了domain.com/about,但只是通过index.php处理它。我很乐意,如果他们输入about.php或about.html,它会将浏览器重定向到domain.com/about。
有可能实现这一目标吗?我已经四处查看使用htaccess删除文件扩展名,但是没有一个能够执行我想要的重定向到index.php?page =。他们都希望以不同方式重定向。
我需要这是普遍的。它不能只处理“关于”,我需要它来处理那个特定的地方。
答案 0 :(得分:1)
如果这不是目录或文件,并且它有扩展名,则重定向不带扩展名:
RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9]+)?$ index.php?page=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\..*$ $1 [R=301,L]