簡體   English   中英

htaccess重定向隱藏php擴展或傳遞參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM