簡體   English   中英

.htaccess 刪除 .php 並添加 url 參數

[英].htaccess remove .php and add url parameter

我有這個 URL http://localhost/signUp.php?url={somevalue}我想把它轉換成這樣:

http://localhost/signUp/{somevalue}

我如何才能對所有頁面執行此操作,而不僅僅是使用 .htaccess 的 signUp.php?

我已經找到了如何刪除 .php 但我不知道如何添加參數。

#Remove .php from url
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L] 

除非您有其他要求,否則您不需要“刪除” .php作為單獨的規則。 您有/signUp/{somevalue}必須重寫為/signUp.php?url={somevalue}

這可以通過這樣的規則來實現:

Options -MultiViews

RewriteEngine On

RewriteRule ^(signUp)/([^/.])+$ $1.php?url=$2 [L]

如果您將somevalue限制為不包含點或斜線,則無需檢查請求是否映射到文件。 這不太可能映射到目錄,除非/signUp也作為目錄存在。

somevalue必須包含 1 個或多個字符。 如果您有進一步的限制,那么這應該包含在正則表達式中。


更新:

謝謝,但這僅適用於注冊,我如何使其適用於所有頁面?

假設“所有頁面”由 4 個或更多字符的文檔根目錄中的單個路徑段組成,僅包含字符azAZ0-9_ (下划線)和- (連字符),然后將上述RewriteRule更改為如下所示:

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([\w-]{4,})/([^/.])+$ $1.php?url=$2 [L]

這會在重寫請求之前檢查相應的.php文件是否存在,盡管如果您沒有其他指令,這可能不是絕對必要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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