我正在使用.htaccess文件来隐藏网址中的 audit.row()
.add("keyspace_name", update.metadata().keyspace)
- .add("table_name", update.metadata().table)
+ .add("table_name", update.metadata().name)
.add("primary_key", update.metadata().partitionKeyType.getString(update.partitionKey().getKey()));
扩展名。虽然它工作正常,但我现在还必须在页面上显示的所有链接中隐藏.php
文件扩展名。
例如,当我将鼠标悬停在链接上时,其网址会显示状态栏并包含.php
扩展名。如何从链接网址中删除.php
或者完全隐藏浏览器状态栏中的网址?
我在.htaccess文件中使用以下代码:
.php
(代码最初基于on github的this answer。)
我的HTML文件中的链接看起来像Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## don't touch /forum URIs
RewriteRule ^forums/ - [L,NC]
## hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
# To remove www header
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
,menu1.php
等。当我点击这些链接时,浏览器网址栏中显示的网址看起来像menu2.php
,这很好。但是在状态栏中,当我将鼠标悬停在这些链接上时,它仍会显示domain.com/menu1
。
如何在状态栏中隐藏menu1.php
后缀?我是否必须手动更改所有链接中的所有URL,或者我可以通过某种方式隐藏它们?
答案 0 :(得分:0)
简短回答:是的,您需要修改所有链接,以便从中删除.php
扩展名。
您引用的.htaccess文件包含两个(相关)部分,它们执行不同的操作:
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
当用户的浏览器请求具有.php
扩展名的网址时,会触发此RewriteRule。该规则会导致网络服务器使用external redirect回复同一网址,但删除了.php
后缀。然后,浏览器将重新尝试使用新网址加载页面,并在地址栏中显示该新网址。
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
然后,第二个RewriteRule会触发不包含.php
扩展名的网址,但如果扩展名与您网络服务器上的实际.php
文件相对应附在他们身上。然后,规则会将.php
扩展名重新附加到网址上,然后在您的网络服务器中重试请求 - 但it does so internally,而浏览器无需了解更改。
因此,实际上,浏览器被告知在没有 .php
扩展名的情况下显示URL ,但是Web服务器仍然会运行带有扩展名的PHP脚本。
但是,所有这些只发生在用户点击链接后。 .htaccess文件中的URL重写规则不会,也不能神奇地编辑HTML代码以修复其中包含的URL。因此,要实际隐藏您使用PHP的事实,您需要手动编辑HTML(包括PHP脚本本身输出的任何HTML代码),以从URL中删除.php
文件扩展名。
(作为一个副作用,这样做也会使上面引用的第一个RewriteRule变得不必要。但是,您可能仍然希望保留它,以便任何仍包含.php
扩展名的旧链接URL仍会自动重定向。)