假设我有一个包含指定网站的网站: 的index.php info.php的
为了隐藏URL的“index.php”部分并将“info.php”更改为“info”,我创建了以下.htaccess:
RewriteEngine On
RewriteRule ^info$ info.php
RewriteRule ^.$ index.php
当我直接在地址栏中输入新的URL时它工作得很好,但在index.php里面我有:
<a href="info.php">
所以当我点击链接时,它会将我引导到信息页面并在URL中显示“info.php”。如果我想在点击链接后在URL中看到“info”,我是否必须更改HTML代码中的链接?或者有没有办法让.htaccess文件自动执行?
答案 0 :(得分:0)
您可以将此代码放在DOCUMENT_ROOT/.htaccess
文件中,以便自动更改这些链接:
RewriteEngine On
RewriteBase /
# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]
# To internally forward /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]
但强烈建议您更改HTML页面中的这些链接,以避免一次外部重定向。