[英]htaccess redirect hiding the php extension or pass a parameter
我正在使用一個主index.php文件來處理大多數請求,所以我的基本.htacess看起來像這樣 :
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php?page=$1 [L]
但是我有一些請求(比如/ signin或/ signout)需要直接從.php文件中使用相同名稱(/signin.php和/signout.php)處理。
所以我的.htaccess規則必須是:“ if %{REQUEST_FILENAME}.php
不存在,請重定向到/index.php?page=$1
否則重定向到%{REQUEST_FILENAME}.php
”。
我怎樣才能做到這一點?
用以下代碼替換您的代碼:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php !-f
RewriteRule ^(.+)$ /index.php?page=$1 [L,QSA]
這將把所有內容發送到/index.php
,它不是有效的文件或目錄,並且文件系統中沒有匹配的.php
。
您可以在index.php中處理此問題,只需重定向index.php上的每個調用。 在那里,您可以閱讀URL中給出的所有參數。
$aParams = explode("/", $_SERVER["REQUEST_URI"]);
現在,您可以處理所有參數並在需要時重定向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.