.htaccess URL重寫為多參數項

.htaccess URL重寫為多參數項

我剛剛在這上面花了我生命的最後 10 個小時,而且我一直在兜圈子,所以希望有人能夠幫助我。

我想要載入一個特定的 URL,如下所示:

http://example.com/f/2011/image.png?attribute=small

當這樣的格式的 URL 命中時,我想將其重寫為命中伺服器:

http://example.com/generate.php?f=2011/image.png&attribute=small

基於上述,我的問題有二:

  1. 如何重寫 htaccess 中的 URL 來滿足我上述的要求?
  2. 如果原始 URL 沒有屬性查詢字串參數,如何確保屬性在透過 htaccess 存取伺服器時為 false/空白/等?

答案1

RewriteEngine On
# If it's not an existing file...
RewriteCond %{REQUEST_FILENAME} !-f
# ...and it's not an existing directory...
RewriteCond %{REQUEST_FILENAME} !-d
# ...and it starts with "f/" then rewrite it to generate.php
RewriteRule ^f/(.*)$ generate.php?f=$1 [L,QSA]

兩者RewriteCond可以省略。更多資訊:

重寫規則

QSA 標誌

答案2

RewriteEngine On

RewriteRule ^([a-z]+)/([0-9]+)/image.png?attribute=small$ generate.php?f=$2/image.png&attribute=small&%{QUERY_STRING} [L]

答案3

這是一個有更多工作機會的人:

RewriteEngine On
# If it's not an existing file...
RewriteCond %{REQUEST_FILENAME} !-f
# ...and it's not an existing directory...
RewriteCond %{REQUEST_FILENAME} !-d
# ...and it starts with "f/" then rewrite it to generate.php
RewriteRule ^([a-z]+)/([0-9]+)/image\.png$ /generate.php?f=$1 [QSA,L]

請告訴我是否有效

相關內容