htaccess:删除扩展名,并重定向到index.php?p=

2024-05-17

RewriteRule ^([a-zA-Z0-9]+)?$ index.php?page=$1 [L]

我之前的代码将 ex:domain.com/about 重写为domain.com/index.php?page=about

所以现在,我想添加一种安全措施,以防万一有人在末尾添加 .html 或 .php 认为它应该在那里,我希望它删除扩展名,但仍然遵循我之前的规则。我希望此更改忽略该文件是否确实存在。如果文件存在,还需要处理结尾。

ex:

如果有人输入 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= 的事情。他们都想以不同的方式重定向。

EDIT

我需要这个是通用的。它不能只处理“关于”,我需要它来处理该特定位置的任何内容。


如果这不是目录或文件,并且有扩展名,则重定向而不带扩展名:

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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

htaccess:删除扩展名,并重定向到index.php?p= 的相关文章

随机推荐