
mod_rewrite是apache服务器的一个强大模块,它允许通过正则表达式重写请求的url。这种方法提供了高度的灵活性和精确性,可以只对特定类型的文件进行扩展名隐藏,同时避免影响其他静态资源(如图片、css、javascript文件)。
配置步骤:
确保 mod_rewrite 模块已启用: 在Apache的配置文件(httpd.conf)中,确保以下行没有被注释掉:
LoadModule rewrite_module modules/mod_rewrite.so
创建或编辑 .htaccess 文件: 在您的网站根目录(DocumentRoot)或需要应用此规则的子目录中创建一个名为.htaccess的文件(如果不存在)。.htaccess文件中的规则会覆盖其所在目录及所有子目录的配置。
添加重写规则: 将以下代码添加到您的.htaccess文件中:
RewriteEngine On
# 如果请求的URI不包含文件扩展名,并且存在对应的.html文件,则内部重写为.html
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.html -f
RewriteRule !\.\w{2,4}$ %{REQUEST_URI}.html [L]
# 否则,如果请求的URI不包含文件扩展名,并且存在对应的.php文件,则内部重写为.php
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule !\.\w{2,4}$ %{REQUEST_URI}.php [L]规则解释:
通过上述配置,当用户访问http://127.0.0.1/search-html/test/low时,Apache会首先检查C:\Apache24\htdocs\search-html\test\low.html是否存在。如果存在,它将内部处理该.html文件,而URL在浏览器中保持无扩展名。如果.html不存在,它会继续检查.php文件。
MultiViews是Apache的mod_negotiation模块提供的一个功能,它允许服务器在没有明确指定文件扩展名时,自动查找并返回与请求名称匹配的文件。这种方法配置简单,但其行为范围更广。
配置步骤:
确保 mod_negotiation 模块已启用: 在Apache的配置文件(httpd.conf)中,确保以下行没有被注释掉:
LoadModule negotiation_module modules/mod_negotiation.so
在 .htaccess 文件中添加配置: 在您的.htaccess文件中,添加以下一行:
Options +MultiViews
工作原理:
启用MultiViews后,当Apache收到一个没有扩展名的请求(例如http://127.0.0.1/search-html/test/low),它会在请求的目录下查找与low匹配的文件,例如low.html、low.php等,并根据服务器的配置和客户端的请求优先级(例如语言、编码等)返回最合适的文件。
重要注意事项:
选择哪种方法取决于您的具体需求:
在部署任何Apache配置更改后,务必重启Apache服务器(例如,通过命令行运行httpd.exe -k restart或apachectl restart),并进行彻底的测试以确保网站功能正常,且URL按预期工作。
以上就是在Apache服务器上实现无扩展名URL访问的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号