RewriteRule ^admin/user$ admin/user.php
我目前會寫的只有這種隱藏法
一個檔一個檔去建立
然後放到網站根目錄的 /.htaccess 中
只是我現在想實現的是「某一個資料夾」裡面的 php 檔案都忽略副檔名就好,而且不用一個一個建?
比如某個資料夾裡面有五十個 .php 腳本
/test/1.php
/test/2.php
/test/3.php ....
/test/50.php
如何針對 test 裡面的副檔名隱藏就好呢?不會影響到其他資料夾的腳本
大概像下面這樣?
[root]
├ .htaccess
├ getTest.php
└ [test]
RewriteEngine On
#禁止直接存取資料夾內的檔案
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^test/(.*)$ - [F,L]
#轉交由 getTest.php 處理
RewriteRule ^test/(.*)$ getTest.php/$1 [L]
<?php
require(__dir__. $_SERVER['REQUEST_URI'].'.php');
如果在網站根目錄的 .htaccess 去隱藏某資料夾的php副檔名,這樣可以嗎?就單純隱藏就好,不用再交給腳本去控制
我以為是這樣寫
RewriteRule ^test/([^./]+)/?$ test/$1.php [L]
但似乎不是
下面這比較接近你原本的
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^test/([^\/]+)\/?$ test/$1.php [L]
不過使用者如果打 網址/test/xxx.php
一樣可以抓到檔案就是
那有辦法讓使用者打 php 的時候報錯或找不到嗎
這個還是不行呢 RewriteRule ^test/([^\/]+)\/?$ test/$1.php [L]
真是怪啊
我現在的做法是直接丟 htaccess 到那個我要隱藏的 php 文件夾
htaccess 內容是
RewriteRule ^([^./]+)/?$ $1.php [L]
雖然這樣可行,只是全都php腳本卻多個 .htaccess 實在是礙眼
所以我想說靠網站根目錄的 .htaccess 做更改